我怎样才能弄清楚为什么cURL挂起并且没有响应?

2022-08-30 23:34:29

我正在尝试在PHP中跟踪cURL调用的问题。它在我们的测试环境中工作正常,但在我们的生产环境中则不然。当我尝试执行cURL函数时,它只是挂起并且从未响应。我尝试从命令行建立cURL连接,但同样的事情发生了。

我想知道cURL是否记录了某个地方发生的事情,因为我无法弄清楚在命令搅动和搅动期间发生了什么。有谁知道是否有跟踪那里发生的事情的日志?

我认为这是连接问题,但是我们的IT人员坚持认为我应该能够毫无问题地访问它。有什么想法吗?我正在运行 CentOS 和 PHP 5.1。

更新:使用详细模式,我得到一个错误28“连接()超时”。我尝试将超时延长到100秒,并将最大值限制为5,没有变化。我尝试ping盒子,但也得到了一个超时。因此,我将向IT部门展示这一点,看看他们是否会再次查看它。感谢所有的帮助,希望我能在半小时内回来,得知这是他们的问题。

更新 2:事实证明,我的盒子正在使用外部IP地址解析服务器名称。当 IT 部门向我提供内部 IP 地址,并在 cURL 调用中替换它时,一切正常。感谢大家的帮助。


答案 1

在你的php中,你可以设置CURLOPT_VERBOSE变量:

curl_setopt($curl, CURLOPT_VERBOSE, TRUE);

然后,这会记录到 STDERR,或记录到指定 using (需要一个文件指针) 的文件:CURLOPT_STDERR

curl_setopt($curl, CURLOPT_STDERR, $fp);

在命令行中,可以使用以下开关:

  • --verbose向命令行报告更多信息
  • --trace <file>或跟踪到文件--trace-ascii <file>

您可以使用将时间戳预置到详细/文件输出--trace-time


答案 2

您还可以使用curl_getinfo() 来获取有关您的特定转移的信息。

http://in.php.net/manual/en/function.curl-getinfo.php


推荐