【问题标题】:Running a PHP script completely on server side完全在服务器端运行 PHP 脚本
【发布时间】:2012-06-27 08:21:56
【问题描述】:

我遇到了 putty 经常断开连接的问题。因此,当我从终端运行 PHP 脚本时,它总是会被中断。该脚本应该运行几个小时,所以我没有运气。

如何从服务器端完全运行它?我正在阅读有关 cron 作业的信息,但此时我很难理解。有什么可以替代 cron 来满足我的需要吗?

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

【问题讨论】:

    标签: php linux amazon-ec2 cron


    【解决方案1】:

    您无需让它在 cron 作业中运行 - 您只需在屏幕内运行 php 脚本即可。

    简单输入;

    screen php /path/to/myphpscript.php
    

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

    screen -r
    

    重新加入这个过程,并查看任何输出。

    【讨论】:

    • 这很好用。我做了: 1:screen 进入屏幕。 2:php my_scripy.php 运行脚本。 3:从现在开始,我可以连接或分离屏幕,脚本会继续执行,直到完成。
    【解决方案2】:

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

    这样的事情会起作用:

    nohup php myscript.php

    【讨论】:

    • Mahmoud,我正在尝试这个。运行此命令、关闭 putty 并重新连接后,我在键入 ps a 时看不到该进程。这正常吗?
    • ps a 仅显示当前会话的进程。看顶部。
    • 这也可以。谢谢!有没有办法知道上一个会话的进程是否仍在新会话中运行?
    • 我认为ps a 在任何会话中都显示了屏幕的进程。这对我有用。
    【解决方案3】:

    您可以创建一个 cron 作业以根据时间任务列表定期启动 php 脚本。 More info。您还可以从控制台在后台启动任务。即php-cgi script.php& 这将使脚本成为后台任务

    【讨论】:

      【解决方案4】:

      看看GNU Screen;它允许您稍后分离和重新附加会话,这非常适合长时间运行的脚本。如果您希望它以重复的方式发生,Cron 是一个不错的选择;一次性批处理作业可以用at 之类的东西来安排。对于更密集的计算需求,您可能需要研究更成熟的作业调度系统,例如 TORQUE

      【讨论】:

        【解决方案5】:

        你可以在后台运行你的程序

        php ./yourscript.php &
        

        【讨论】:

        • 后台进程不允许它在会话终止后继续存在。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-16
        • 2016-06-09
        • 2013-09-03
        • 1970-01-01
        相关资源
        最近更新 更多