2012-06-26 104 views
4

我遇到了腻子定期断开连接的问题。所以,当我从终端运行PHP脚本时,它总是被打断。剧本应该运行几个小时,所以我没有任何运气。在服务器端完全运行PHP脚本

如何从服务器端完全运行此操作?我正在阅读关于cron的工作,但我现在很难理解。对于我所需要的cron有没有其他选择?

我有几个脚本PHP文件,需要一次运行,或者一次运行两次。有任何想法吗?

回答

9

你不需要让它在一个cron工作中运行 - 你可以在屏幕上运行php脚本。

只需键入;

screen php /path/to/myphpscript.php 

即使从PuTTY断开连接,屏幕仍将继续运行。如果你需要检查它,你可以使用;

screen -r 

重新将自己附加到此过程并查看任何输出。

+0

运行程序这种运作良好。我做了:1:屏幕进入屏幕。 2:'php my_scripy.php'来运行脚本。 3:从这一点开始,我可以连接或从屏幕上分离,并且脚本一直持续到完成。 – musicliftsme

3

您需要防止进程在会话断开连接时终止。

像这样的工作:

nohup php myscript.php

+0

马哈茂德,我现在正在尝试。运行这个命令后,关闭putty,然后重新连接,当我输入'ps a'时,我没有看到这个过程。这是正常的吗? – musicliftsme

+0

'ps a'只显示当前会话的进程。看顶部。 –

+0

这也适用。谢谢!有没有办法知道前一个会话的过程是否仍在新的会话中运行? – musicliftsme

1

您可以创建一个cron作业开始定期基于时间的任务清单上的PHP脚本。 More info。您也可以从控制台在后台启动任务。即php-cgi script.php&这会使脚本成为后台任务

1

看看GNU Screen;它允许您稍后分离并重新连接会话,这对于长时间运行的脚本来说非常合适。如果您希望它以循环方式发生,Cron是一个不错的选择;一次性批量作业可以按照类似于at的方式进行安排。对于更加激烈的计算需求,您可能需要考虑更为全面的作业调度系统,如TORQUE

0

您可以在后台

php ./yourscript.php & 
+1

背景进程不允许它在会话终止后继续存在。 –

+0

你是完全正确的。我的错。 –