2013-01-18 92 views
1

沒有效果我有以下設置:PHP捲曲CURLOPT_CONNECTTIMEOUT對連接超時

$handle = curl_init(); 
curl_setopt($handle, CURLOPT_URL, $url); 
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($handle, CURLOPT_TIMEOUT, 30); 
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($handle, CURLOPT_POST, true); 
curl_setopt($handle, CURLOPT_POSTFIELDS, $data); 
$response = curl_exec($handle); 

但是,當請求被髮送到服務器,這是目前不響應,捲曲收益在1秒內回答。我不明白爲什麼會發生這種情況,因爲我已將CURLOPT_CONNECTTIMEOUT設置爲30,這應該意味着捲曲輪胎連接到服務器30秒。我需要curl嘗試連接30秒,這不是CURLOPT_CONNECTTIMEOUT應該做什麼,還是存在某種誤解?

這裏是什麼的print_r(curl_getinfo($處理),TRUE)返回:

(
    [url] => http://server.url 
    [content_type] => 
    [http_code] => 0 
    [header_size] => 0 
    [request_size] => 0 
    [filetime] => -1 
    [ssl_verify_result] => 0 
    [redirect_count] => 0 
    [total_time] => 1.045 
    [namelookup_time] => 0.016 
    [connect_time] => 0 
    [pretransfer_time] => 0 
    [size_upload] => 0 
    [size_download] => 0 
    [speed_download] => 0 
    [speed_upload] => 0 
    [download_content_length] => -1 
    [upload_content_length] => -1 
    [starttransfer_time] => 0 
    [redirect_time] => 0 
    [certinfo] => Array 
     (
     ) 

    [redirect_url] => 
) 
+0

'但是,當請求被髮送到服務器,當前沒有響應'如何發送一個請求到一個沒有響應的服務器'在所有'?你可以連接到服務器的TCP? – hek2mgl

+1

在1秒後你會得到什麼樣的答案?也許服務器拒絕請求,所以不需要再次嘗試。 – mosch

+0

@ Mo.sch我試圖用firefox和firebug網絡面板來訪問這個網址,它說狀態中止了。我不知道這意味着什麼。 – newbie

回答

1

在我看來,這意味着,有哪些得到了由遠程站點(中止)關閉連接。服務器拒絕你的連接,所以不需要等待任何東西。順便說一下:connection_timeout是一個設置,用於告訴curl等到它停止嘗試到達遠程主機時需要等待多長時間。 - Mo.sch 13小時前