【发布时间】:2015-02-23 08:34:34
【问题描述】:
我有 worpdress 插件,它通过 curl 与我的生产站点 https://mysite.com 进行通信。 这是卷曲代码:
$vars = json_encoded(
array(
//some params
);
);
$headers = array(
'Accept: application/json',
'Content-Type: application/json',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://mysite.com/myapi");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$result = curl_exec($ch);
var_dump(curl_error($ch);
它适用于所有使用我的插件的 wp 网站,但突然它只对一个网站停止工作: curl_error() 返回:
Failed to connect to mysite.com port 443: Connection timed out
此外,我的插件不在 wordpress 存储库中,它位于 https://mysite.com/plugin 上,我的插件使用钩子“site_transient_update_plugins”来检查可用更新。这也不再起作用,他们不再收到有关可用更新的消息。
所以我猜他们在他们的服务器上改变了一些导致这个问题的东西,我只是找不到可能导致这个问题的原因。
我也不是 100% 确定,但连接需要大约 300 秒才能引发此错误。 CURLOPT_CONNECTTIMEOUT 的默认值为 300 秒。
因此,任何可能导致这种行为的建议都会有所帮助。
【问题讨论】:
-
我要问:您确定与服务器的连接正常吗?例如,您是否尝试过 telnet 到 443 端口并查看它是否存在?
-
是的,我 100% 确定与服务器的连接正常。正如我所说,它适用于所有其他站点,它适用于少数几个不同服务器上的几个 wp 站点。只是它停止为该站点工作。所以我不知道是什么导致了这个,php.ini 中的一些设置或其他东西。我正在尝试复制它,但我不能。
-
错误消息看起来确实是连接问题,而不是应用层,这就是我问的原因。通常,即使应用程序出现问题,您也会收到响应。我会检查服务器上的日志,如果你没有发现任何有用的东西,我会做一个 tcpdump 来查看服务器是否正确接收到数据包。