如果链接的状态(通过可能的重定向)仍然有效(例如状态200),我想检查数据库中的链接。以下脚本是我目前使用的。限制是超过+/- 400个链接,服务器给我500个内部错误。不幸的是,我无法查看服务器日志的原因是什么,我的假设是它是一个超时问题。
如何使这个脚本具有可扩展性,以便它可以让我运行更多的当前+/- 400个链接?
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()添加到代码中,但它没有帮助(或实现错误)。
欢迎任何建议。
答案 0 :(得分:1)
PHP脚本的默认执行时间为30秒。之后会超时。
您可以将此时间增加到以下内容:
ini_set('max_execution_time', 600); //10 minutes
但是,为了使其真正可扩展,我会将当前的“链接检查”状态存储在数据库中,以便您可以继续从中断处继续并让多个实例调用您的脚本。