[英]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.