我们编写了一个从外部服务器提取数据的脚本。如果服务器出现故障,我们不希望我们的服务器等待数据,因为我们处理大量数据并且我们不希望它陷入困境。为了解决这个问题,如果 curl 调用超过几百毫秒,我们会尝试使其超时。
我发现一些文档说 CURLOPT_TIMEOUT_MS 和 CURLOPT_CONNECTTIMEOUT_MS 应该在我的 php 和 libcurl 版本中可用,但它似乎没有超时,即使我将超时设置为 1ms。
$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);
有谁知道我们做错了什么或另一种方式来做到这一点?