2009-12-06 53 views
4

我正在使用curl來調用Web服務API。該服務可能無響應,所以我想設置超時。當我使用CURLOPT_TIMEOUT時,事情按預期工作。但是當我使用CURLOPT_TIMEOUT_MS(注意'MS'爲毫秒)超時似乎根本不起作用。 php.net告訴我後者自PHP 5.2.3起可用,並且我正在使用5.2.6。爲什麼會捲曲忽略CURLOPT_TIMEOUT_MS(但榮譽CURLOPT_TIMEOUT)?

任何想法,爲什麼發生這種情況?

謝謝。

的代碼片段:

$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); 
+0

檢查phpinfo()以確保您至少有捲曲7.16.2 – Greg

+2

不是 - 7.15.5。謎團已揭開。謝謝,格雷格。 – Greg

回答

6

要關閉這個問題:

捲曲的版本我使用(7.15.5)不支持CURLOPT_TIMEOUT_MS。根據格雷格我至少需要7.16.2。

+0

而不只是根據格雷格,見:http://www.php.net/manual/en/function.curl-setopt.php –