php中的批量链接检查器
如果链接状态(通过可能的重定向)仍然有效(例如状态200),我想检查数据库中的链接。下面的脚本是我当前使用的脚本。限制是超过+/-400个链接时,服务器会给我500个内部错误。不幸的是,我无法查看服务器日志的原因是什么,我的假设是这是一个超时问题 我如何使这个脚本可伸缩,以便它允许我运行超过当前+/-400个链接php中的批量链接检查器,php,curl,Php,Curl,如果链接状态(通过可能的重定向)仍然有效(例如状态200),我想检查数据库中的链接。下面的脚本是我当前使用的脚本。限制是超过+/-400个链接时,服务器会给我500个内部错误。不幸的是,我无法查看服务器日志的原因是什么,我的假设是这是一个超时问题 我如何使这个脚本可伸缩,以便它允许我运行超过当前+/-400个链接 function urlValidator($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url
function urlValidator($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode != '200') {
echo $url;
echo " - ". $httpcode;
}
}
// creation of $url_array
//
foreach($url_array as $url){
if(!is_null($url)) {
urlValidator($url);
}
}
我确实尝试将flush()和/或ob_flush()添加到代码中,但都没有帮助(或者实现错误)
欢迎任何建议。PHP脚本的默认执行时间为30秒。之后它将超时 您可以将此时间增加到如下所示:
ini_set('max_execution_time', 600); //10 minutes
但是为了使它真正具有可伸缩性,我会将当前的“链接检查”状态存储在数据库中,这样您就可以在中断的地方继续,并让多个实例调用脚本。对于多个实例,您将在50个链接的部分中分解作业,更新数据库,然后重新运行脚本?你会认为使用cronjob每30秒调用一次相同的脚本,在没有更新的情况下查找接下来的50个链接吗?是的,这正是我的意思。您只需确保没有多次检查相同的链接;)