PHP cURL超时被忽略

Bet*_*mos 2 php curl

使用curl_setopt()我设置CURLOPT_CONNECTTIMEOUT_MS为1000(1秒)并设置另一个睡眠5秒的脚本,然后响应200 OK(使用sleep()),我打电话进行测试.我的脚本总是等待响应,即使它应该在cURL超时错误中产生.

如何使超时按预期工作并中断请求?

$ch = curl_init($url);
curl_setopt_array($ch, array(
  CURLOPT_RETURNTRANSFER => TRUE,
  CURLOPT_FOLLOWLOCATION => TRUE,
  CURLOPT_NOBODY => TRUE,
  CURLOPT_PROTOCOLS => CURLPROTO_HTTP | CURLPROTO_HTTPS,
  CURLOPT_CONNECTTIMEOUT_MS => 1000,
  CURLOPT_MAXREDIRS => 5,
  CURLOPT_USERAGENT => 'Linkit/2.x Drupal/7.x',
));
$document = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

我也试过CURLOPT_TIMEOUT_MS了没有_MS后缀的变种.

我在OS X 10.6,XAMPP上使用PHP 5.3.4和cURL 7.19.7.

Fra*_*nes 11

CURLOPT_CONNECTTIMEOUTCURLOPT_CONNECTTIMEOUT_MS定义的时间卷曲可以连接到服务器,但在你的情况下,最大数量,连接成功,因此超时不再适用.

您需要使用CURLOPT_TIMEOUTCURLOPT_TIMEOUT_MS定义cURL可以执行的最长时间.

有关PHP支持的选项的完整列表,请查看curl_setopt文档.