2012-02-14 70 views
1

我有一个脚本来抓取页面。脚本运行时,需要3个小时才能完成。 我想在按下按钮时创建一个按钮,脚本必须停止运行。php在运行时停止执行

有人想法吗?

+2

你是通过浏览器运行它吗? cron工作?命令行? – 2012-02-14 14:44:51

回答

-1
<input type="button" value="Stop" onclick="window.stop()"> 

使用Window.stop,它会从加工

0

停止页面你不能停止运行PHP脚本。您可以停止客户端的浏览器等待响应,但PHP/Apache进程仍会在后台运行,直到完成或遇到错误。

如果你只想停止浏览器,那么Sandeep Bansal的答案应该可以做到。

1

正在运行的脚本是一个网页?

基本上你可以用停止按钮做的所有事情都是向网络服务器发送另一个请求(只是停止加载网页不会停止在服务器上运行的请求)。其他请求(由另一个PHP线程/进程处理)需要让第一个进程知道它需要停止。进程间(/线程)通信的一个简单方法是让第二个脚本在/ tmp /目录中创建一个文件,并让第一个进程每隔一段时间查找一次该文件。如果第一个进程发现该文件存在,它应该中止处理并删除该文件。只是为了更健壮一些,它也应该在启动时删除文件,如果它存在。注意:以非常快的速度查看文件是否存在(在Linux中)。它不会打到硬盘上(因为它会被缓存)。除非您真的开始每秒钟处理1000次以上,否则您甚至不会注意到额外的延迟。

显然这只会在第二个进程在PHP中循环时才起作用。如果第二个进程执行需要3个小时的单个SQL查询,则它无法每隔一秒查找该文件。在这种情况下,你需要用信号做一些事情,杀死第一个进程,参见http://php.net/manual/en/function.posix-kill.php