【问题标题】:PHP curl timeout error detectionPHP curl超时错误检测
【发布时间】:2012-08-05 18:17:32
【问题描述】:

我使用 curl 来执行这样的 HTTP 请求:

$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

$data = curl_exec($ch);
curl_close($ch);

如何检查是否发生错误,是否是超时错误?

【问题讨论】:

  • 卷曲还是发散?

标签: php curl error-handling timeout


【解决方案1】:

使用curl_errno()

Code 28 超时。

【讨论】:

  • 名为“CURLE_OPERATION_TIMEOUTED”。
  • TIMEOUTED‽ 说真的,这些人有错吗?为了清楚起见,php.net 的文档(正确地)列出了这个不幸的常量名称。 curl.haxx.se 语法更好,但遗憾的是 php-curl 无法识别 CURLE_OPERATION_TIMEDOUT。
  • @Lambat 显然 CURLE_OPERATION_TIMEOUTED 是 curl 使用的原始常量名称,然后他们将其更改为 CURLE_OPERATION_TIMEDOUT,同时将前者保留为现在未记录的别名。最新版本的 PHP 支持两者;有关历史,请参阅php.net/manual/en/curl.constants.php#117928 的评论。
  • @MarkAmery 很高兴他们终于解决了这个问题。
【解决方案2】:

您可以像这样检查错误号及其描述:

// Check if any error occurred
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}

【讨论】:

  • 如果使用 curl 作为 Object 会好很多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 2012-11-27
相关资源
最近更新 更多