簡體   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