PHP Curl 请求超时/页面停止加载



我正在向不同的网站发送大约 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 请求持续检查进度。

最新更新