【发布时间】:2013-01-09 18:01:17
【问题描述】:
我有一个 php 程序,它执行大量 curl 请求来抓取网页。它可能多达一百万个请求。我需要完全停止脚本运行。即使我在浏览器中停止了它,它仍在处理请求。我怎样才能永久停止它?
【问题讨论】:
-
在这种情况下应该总是有一个终止开关>。
-
我现在明白了我所做的是不好的做法:|感谢您的所有回答!
我有一个 php 程序,它执行大量 curl 请求来抓取网页。它可能多达一百万个请求。我需要完全停止脚本运行。即使我在浏览器中停止了它,它仍在处理请求。我怎样才能永久停止它?
【问题讨论】:
您只是在终止请求,您需要停止 apache 以暂时停止它。将来重新设计它,以便进程查找终止开关(如文件的存在)并在找到它时停止处理。听起来你把一个长时间运行的进程塞进了一个 php 脚本,为什么不直接把它作为一个正常的系统进程运行呢?
【讨论】:
maintenance.flag 一样简单?
假设您正在运行典型的灯堆栈,如有必要,通过 SSH 连接到您的计算机,然后重新启动 Apache。
如果您真的要使用 PHP 执行长时间运行的任务,我必须建议您考虑使用 cron 来运行它们或实现某种任务队列。从浏览器请求中触发这类事情通常是一个非常糟糕的主意。
【讨论】:
重新启动 Apache。如果您使用的是 XAMP,请从控制面板停止并启动它。
如果没有,在 Windows 上,转到任务管理器并结束 apache.exe 进程。然后重新开始。
【讨论】:
为什么每个人都认为你在运行 Apache?重新启动您的网络服务器,它应该是花花公子。将来,您可能会有一个终止开关,例如(示例):
while(!file_exists('stop.txt'))
然后在你准备好停止的时候创建那个文件 ^.^ 或者在切断之前进行有限次数的迭代。
【讨论】: