簡體   English   中英

PHP Curl請求超時/頁面停止加載?

[英]PHP Curl requests Timeout / Page stop loading?

我向不同的網站發送了大約600個Curl請求,有時我的頁面停止/中斷,這是我收到的錯誤。

Website.com意外關閉了連接。 ERR_INCOMPLETE_CHUNKED_ENCODING

我正在通過我所有的600個網站循環使用以下功能。

function GetCash($providerUrl, $providerKey){

$url = check_protocol($providerUrl);
$post = [
    'key' => Decrypt($providerKey),
    'action' => 'balance'
];

// Sets our options array so we can assign them all at once
$options = [
    CURLOPT_URL        => $url,
    //CURLOPT_POST       => false,
    CURLOPT_POSTFIELDS => $post,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 5,
];

// Initiates the cURL object
$curl = curl_init();
curl_setopt_array($curl, $options);
$json = curl_exec($curl);

curl_close($curl);

//Big variable of all the values
$services = json_decode($json, true);
//Check for invalid API response
if($services['error'] == "Invalid API key"){
    return FALSE;
}else{
    return $services['balance'];
}
return FALSE;

}

如果您以同步方式向600個不同的網站發送請求,則該請求很可能僅超出了PHP的時間限制。 根據頁面輸出的內容,它可能會突然截斷數據,從而導致此錯誤。 要查看是否是這種情況,請嘗試僅查詢一些網站。

您也許可以在PHP代碼中運行set_time_limit(0)來刪除時間限制,但是它仍然可能會導致瀏覽器超時。 因此,通常最好從沒有時間限制的命令行運行長時間運行的任務,例如php /path/to/script.php

如果仍然需要結果顯示在HTML頁面上,則可能需要考慮生成一個后台任務 ,將其進度保存到某種文本文件或某種數據庫中,並使用AJAX請求來連續檢查進度。

暫無
暫無

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

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