php中的批量链接检查器

php中的批量链接检查器,php,curl,Php,Curl,如果链接状态(通过可能的重定向)仍然有效(例如状态200),我想检查数据库中的链接。下面的脚本是我当前使用的脚本。限制是超过+/-400个链接时,服务器会给我500个内部错误。不幸的是,我无法查看服务器日志的原因是什么,我的假设是这是一个超时问题 我如何使这个脚本可伸缩,以便它允许我运行超过当前+/-400个链接 function urlValidator($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url

如果链接状态(通过可能的重定向)仍然有效(例如状态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()添加到代码中,但都没有帮助(或者实现错误)


欢迎任何建议。

PHP脚本的默认执行时间为30秒。之后它将超时

您可以将此时间增加到如下所示:

ini_set('max_execution_time', 600); //10 minutes

但是为了使它真正具有可伸缩性,我会将当前的“链接检查”状态存储在数据库中,这样您就可以在中断的地方继续,并让多个实例调用脚本。

对于多个实例,您将在50个链接的部分中分解作业,更新数据库,然后重新运行脚本?你会认为使用cronjob每30秒调用一次相同的脚本,在没有更新的情况下查找接下来的50个链接吗?是的,这正是我的意思。您只需确保没有多次检查相同的链接;)