【问题标题】:PHP Script running on the command line died during echo()在命令行上运行的 PHP 脚本在 echo() 期间死亡
【发布时间】:2010-10-07 19:45:02
【问题描述】:

我有一个在命令行上运行的脚本,由 crontab 调用。在运行此脚本的最后五次尝试中,它在 echo 语句中途死亡 - cron 输出仅显示预期的 echo 输出的一部分,之后没有任何内容被执行。这是一个长时间运行的脚本,通过 php-cli 运行,执行文件管理任务。

是否有任何事情可能导致脚本在 echo 语句期间终止,而不生成任何其他输出,或者在 echo 期间排除故障或捕获潜在错误的方法?

我不确定我可以发布哪些代码会有所帮助,因为这是一个涉及一些库的相当全面的脚本。 echo 语句相当简单 - echo('Checking file...') 可能会以“Che”的形式放入日志中,然后不再有输出。

【问题讨论】:

    标签: php


    【解决方案1】:

    首先,我将启用错误记录。其次,由于它是 PHP,可能是您在 echo 函数中使用函数初始化了一个变量,但该函数以致命错误退出(常见于 PHP+I/O 操作),因此整个脚本就死了。 打开错误日志,看看哪一行会让人头疼。

    没有看到任何代码,这是我最好的选择。

    【讨论】:

    • 我确实启用了错误日志记录,E_ALL,但我没有收到任何来自 PHP 的错误消息。我也有 stout 和 stderr 通过管道传输到日志文件,但两者都只显示部分 echo 语句。
    • 脚本死掉的那一行是什么样子的?
    • echo "正在检查 zip 文件..."; - 给出输出'Che'
    • 那是I/O故障或者内存不足,至少这些是我最好的猜测。您是否会尝试在 try/catch 语句中包围您的 I/O 操作和资源繁重的操作,甚至可能设置您自己的错误处理程序?
    • 我做的,除了函数特定的try/catch结构外,我还有一个try/catch围绕脚本的整个逻辑,出现这个问题时不会触发。
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2015-05-10
    • 2012-02-16
    • 2012-05-03
    • 2021-06-20
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多