【发布时间】:2012-06-27 08:21:56
【问题描述】:
我遇到了 putty 经常断开连接的问题。因此,当我从终端运行 PHP 脚本时,它总是会被中断。该脚本应该运行几个小时,所以我没有运气。
如何从服务器端完全运行它?我正在阅读有关 cron 作业的信息,但此时我很难理解。有什么可以替代 cron 来满足我的需要吗?
我有几个脚本 PHP 文件需要一个一个运行,或者一次运行两个。有什么想法吗?
【问题讨论】:
标签: php linux amazon-ec2 cron
我遇到了 putty 经常断开连接的问题。因此,当我从终端运行 PHP 脚本时,它总是会被中断。该脚本应该运行几个小时,所以我没有运气。
如何从服务器端完全运行它?我正在阅读有关 cron 作业的信息,但此时我很难理解。有什么可以替代 cron 来满足我的需要吗?
我有几个脚本 PHP 文件需要一个一个运行,或者一次运行两个。有什么想法吗?
【问题讨论】:
标签: php linux amazon-ec2 cron
您无需让它在 cron 作业中运行 - 您只需在屏幕内运行 php 脚本即可。
简单输入;
screen php /path/to/myphpscript.php
即使您与 PuTTY 断开连接后,屏幕仍会继续运行。如果你需要检查它,你可以使用;
screen -r
重新加入这个过程,并查看任何输出。
【讨论】:
screen 进入屏幕。 2:php my_scripy.php 运行脚本。 3:从现在开始,我可以连接或分离屏幕,脚本会继续执行,直到完成。
您需要防止进程在会话断开连接时终止。
这样的事情会起作用:
nohup php myscript.php
【讨论】:
ps a 时看不到该进程。这正常吗?
ps a 仅显示当前会话的进程。看顶部。
ps a 在任何会话中都显示了屏幕的进程。这对我有用。
您可以创建一个 cron 作业以根据时间任务列表定期启动 php 脚本。 More info。您还可以从控制台在后台启动任务。即php-cgi script.php& 这将使脚本成为后台任务
【讨论】:
看看GNU Screen;它允许您稍后分离和重新附加会话,这非常适合长时间运行的脚本。如果您希望它以重复的方式发生,Cron 是一个不错的选择;一次性批处理作业可以用at 之类的东西来安排。对于更密集的计算需求,您可能需要研究更成熟的作业调度系统,例如 TORQUE。
【讨论】:
你可以在后台运行你的程序
php ./yourscript.php &
【讨论】: