php - 在 PHP5 curl调用中,如何设置超时 发布的CURL选项似乎不工作?

  显示原文与译文双语对照的内容

我们已经编写了一个脚本来从外部服务器提取数据。 如果服务器停止,我们不希望服务器等待数据,因为我们处理了很多数据。 为了解决这个问题,我们试图在花费超过几百毫秒的时间内超时。

我发现一些文档说,CURLOPT_TIMEOUT_MS和CURLOPT_CONNECTTIMEOUT_MS应该可以在我的版本中使用,但是它似乎不是时候。


$url ="http://www.cnn.com;

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER,0);//Change this to a 1 to return headers
 curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1);

 $data = curl_exec($ch);

 curl_close($ch);

谁知道我们做了什么错误或者另一种方法?

时间: 原作者:

服务器中看到这一点没有React,并且curl的多个超时不能正常工作:

"。"。"。我们有一些时间,我们提供信息的站点有dns服务器无响应。 发生这种情况时,curl ( php绑定) 中设置的超时值不能像预期那样正常工作。 在 1min 14秒后,"无法解析主机"时出现超时: www.yahoo.com ( 找不到域 NAME )"在测试环境中发生这种情况,我们将/etc/resolv.conf 修改为不存在( 名称服务器 1.1.1.1 )的名称服务器。 不管他们设置什么


(CURLOPT_CONNECTTIMEOUT, CURLOPT_CONNECTTIMEOUT_MS 
, CURLOPT_TIMEOUT, CURLOPT_TIMEOUT_MS)

当我们无法到达DNS服务器时,它们不会超时。 我使用 curl_multi,因为我们有多个来自同一时间的信息的源。 下面的例子调用了一个简单的例子。 顺便说一下,curl_errno没有返回错误代码,即使出现错误。 不确定为什么。"

...