2013-07-16 27 views
0

這裏是我的代碼捲曲CURLOPT_TIMEOUT犯規作品,腳本執行永遠

function exit_ajax($ex_return_value, $ex_ch=null, $ex_close_resource=false) { 
    $output = array('return' => $ex_return_value); 
    echo json_encode($output); 
    if ($ex_close_resource) 
     curl_close($ex_ch); 
    exit(); 
} 

#ini_set("display_errors",1); 
#error_reporting(E_ALL); 
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) 
    exit_ajax("server value unset"); 
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') 
    exit_ajax("server value bad"); 
$nickname = $_POST['nickname']; 
$ch = curl_init(); 
if(!$ch) 
    exit_ajax("CURL_INIT_NULL", $ch, true); 
curl_setopt($ch, CURLOPT_URL, "t.co"); 
curl_setopt($ch, CURLOPT_HTTPHEADER,array('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4')); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$html = curl_exec($ch); 
if (!$html) exit_ajax("Errors: curl_getinfo: " . curl_getinfo($ch) . "; curl_error: " . curl_error($ch) . "; curl_errno: " . curl_errno($ch), $ch, true); 

$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
curl_close($ch);  
exit_ajax("all fine"); 

它執行從一些頁面Ajax調用。如果所需的網站已啓動,所有工作正常。如果它下來(502/504),那個腳本永遠在運行。我爲了使它返回t/o錯誤而改變了什麼?

回答

0

這不是cURL問題。

雖然網站是UP - 請求狀態獲取200(OK)和腳本執行精細

雖然網站已關閉 - AJAX請求繼續發送/等待請求,直到它得到200(OK)狀態。

嘗試在這種情況下避免AJAX並使用PHP發送cURL請求。