簡體   English   中英

curl CURLOPT_TIMEOUT不起作用,腳本永遠執行

[英]curl CURLOPT_TIMEOUT doesnt works, script executes forever

這是我的代碼

    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錯誤?

那不是cURL問題。

網站啟動時-請求狀態獲取200(OK)並且腳本執行正常

網站關閉時-AJAX請求會一直發送/等待請求,直到其狀態為200(OK)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM