【发布时间】:2014-02-19 23:27:45
【问题描述】:
我有一个 PHP 代码递归解析网站,并将必要的信息保存到数据库中。
我当前的函数即将解析 500 页。但是,我注意到开始“爬行”后出现错误。现在我需要停下来,清空数据库并再次调用该函数。
但功能并没有停止 :D
我关闭了标签,我尝试从另一个标签调用exit("");,但是这个怪物不会停止!
我在 localhost 中使用 WAMPServer,是否有助于停止所有服务并重新启动?它会继续爬行,还是在我重新启动 Apache 时一切都停止?
【问题讨论】:
-
@Linblow 太棒了!所以这目前是错误的,我应该在我的脚本中使它成为真的,对吧? 编辑: 它不起作用:/
-
ignore_user_abort 用于命令行处理,默认是在终端丢失时中止,所以这里没有帮助。
-
你不应该首先从网页开始这样的任务。这是一项长期运行的任务,与回答 Web 请求无关。它应该从命令行手动启动,或者作为守护进程或队列工作者的一部分。无论哪种情况,您都可以使用任务管理器将其停止,就像您计算机上的任何其他进程一样。
-
@DigitalChris 它不仅用于命令行处理。 CengizFrostclaw 这是 PHP 中的一种错误。您需要将内容发送到输出缓冲区并在循环中清除它以获得预期的行为。试试这个代码pastebin.com/ZRixXC6i 例如将它粘贴到 test.php 中。在选项卡中运行脚本 test.php,然后在同一目录的新选项卡中打开 counter.txt。不断刷新counter.txt,你会看到无论脚本test.php是否被中止,它都会不断增加。然后将 ignore_user_abort 设置为 false 重试。这一次,一旦中止,它将停止递增。
标签: php apache localhost exit wampserver