1

我写了一个网站爬虫,我使用 while 循环来爬取整个网站,但我的循环在大约 660 秒后停止。

我设置了 set_time_limit ( 0 ) 并使用刷新来回显输出并使用睡眠功能,我认为我的代码是错误的,但我在我的代码中测试了一个简单的 while 循环:

        while ( 1 ) {
        sleep ( 30 );
        echo "Crawling on the go ..." . time ();
        echo "<br />";
        echo str_pad ( " ", 4096 );
        flush ();

    }

但是这个简单的 while 在大约 660 秒后也停止了!我不知道我的问题是什么!我在我的服务器上检查了 WHM 进程管理器,我看到我的进程被杀死了!我想知道服务器防火墙会因为 CPU 或 RAM 使用情况而杀死我的进程?请帮帮我!

4

3 回答 3

1

您需要set_time_limit(0);在 PHP 开始标记之后的页面顶部写。这对我有用..我希望这也对你有用..

于 2011-06-29T11:01:46.053 回答
0

set_time_limit() 可能会被拒绝(如果 PHP 处于安全模式则无效)。附带说明一下,sleep() 时间不包含在时间限制中,因此如果您删除睡眠并且脚本正在运行的时间被更改,则可能是时间限制。要检查这是否是时间限制(其他选项是 CPU 时间限制),注册关闭功能并检查连接状态(值 2 表示超时)

于 2011-06-29T11:07:11.753 回答
0

您还可以将以下行放入 .htaccessphp_value max_execution_time <timeinseconds>

于 2011-06-29T11:25:31.610 回答