繁体   English   中英

为什么curl会忽略CURLOPT_TIMEOUT_MS(但是尊重CURLOPT_TIMEOUT)?

[英]Why would curl ignore CURLOPT_TIMEOUT_MS (but honor CURLOPT_TIMEOUT)?

我使用curl来调用Web服务API。 该服务可以无响应,所以我想设置超时。 当我使用CURLOPT_TIMEOUT时,事情按预期工作。 但是当我使用CURLOPT_TIMEOUT_MS(注意'MS'为毫秒)时,超时似乎根本没有启动。 php.net告诉我后者自PHP 5.2.3版本开始可用,我使用的是5.2.6。

任何想法为什么会这样?

谢谢。

代码片段:

$c = curl_init();
curl_setopt( $c, CURLOPT_URL, $call );
curl_setopt( $c, CURLOPT_HTTPHEADER, $headers); 
curl_setopt( $c, CURLOPT_HEADER, false );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $c, CURLOPT_TIMEOUT_MS, 100 ); 
curl_setopt( $c, CURLOPT_CONNECTIONTIMEOUT_MS, 100 ); 
$result = curl_exec($c);
curl_close($c);

要结束这个问题:

我正在使用的curl版本(7.15.5)不支持CURLOPT_TIMEOUT_MS。 据格雷格说我至少需要7.16.2。

我观察到,类似的问题在运行curl版本4.3.0的CentOS 5.4系统上,似乎每当curl构建为使用'标准系统名称解析器'时,这种行为就会出现。

解决方法是使用'CURLOPT_NOSIGNAL'选项和'CURLOPT_TIMEOUT_MS'; 然而,这可能会产生后果。

查看以下页面的详细信息: https//ravidhavlesha.wordpress.com/2012/01/08/curl-timeout-problem-and-solution/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM