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