PHP卷曲超时错误检测

mor*_*ebi 30 php error-handling curl timeout

我使用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);
Run Code Online (Sandbox Code Playgroud)

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

Jas*_*ary 38

使用 curl_errno()

代码28是超时.

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