2010-12-20 163 views
0

我有一个需要很长时间才能运行的web脚本(并且它需要很长时间)。通过“网页脚本”,我的意思是通过访问浏览器中的页面来运行并反对在命令行上执行的脚本。脚本在PHP中,我在LAMP堆栈中。如何杀死一个web进程

如果我想要如何找到并杀死这个过程?

“Kill”可能是错误的词。我只想让脚本停下来。我可以设想让这个脚本“监视”我的系统的某些状态,然后在它发现变化时停下来。如果我这样做,我不确定要做到这一点的最佳方法是什么。无论如何,我完全接受任何建议。

+1

有一点要记住,你可以设置PHP的['max_execution_time'](http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time):也就是说,您可以指定一个PHP脚本在被杀之前被允许占用多少时间。这可能比手动停止它或试图拿出逻辑来杀死它更有用。 – 2010-12-20 20:38:30

+0

@Mark,非常好。 – 2010-12-20 20:41:34

+0

这是真的。在这种特殊情况下,我可以随时杀死脚本。 – 2010-12-20 20:43:40

回答

3

脚本启动时,写它的PID到文件中,像

file_put_contents(getmypid().".pid","Running"); 

当剧本完成后,将删除文件。

然后创建另一个脚本,它将运行cron格式。它寻找超过一定年龄段的pid文件,并在其上查找kill $pid

简单。

+0

我最终这样做,除了没有cron。 – 2010-12-20 20:50:01

0

你只是要去脚本的网页,即.. www.mysite.com/mywebscript.php或者你是从另一个页面运行脚本?我建议使用system()或其他东西,这样你可以在你的linux平台上查找进程ID。虽然,有人可能会投我的提及系统()

此外,您可以在脚本中使用一个线程。你可以让它执行任何操作,并且同时进行输入,并且只要发送一个命令就可以随时杀死它。