我向不同的网站发送了大约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;
}
答案 0 :(得分:0)
如果您以同步方式向600个不同的网站发送请求,则该请求很可能仅超出了PHP的时间限制。根据页面输出的内容,它可能会突然截断数据,从而导致此错误。要查看是否是这种情况,请尝试仅查询一些网站。
您也许可以在PHP代码中运行set_time_limit(0)
来删除时间限制,但是它仍然可能导致某种浏览器超时。因此,通常最好从没有时间限制的命令行运行长时间运行的任务,例如php /path/to/script.php
。
如果您仍然需要将结果显示在HTML页面上,则可以考虑生成background task,将其进度保存到某种文本文件或数据库中,并使用{{3 }},以不断检查进度。