【问题标题】:PHP script finishes when you start it manually, but not when its started via cronjobPHP 脚本在您手动启动时完成,但在通过 cronjob 启动时不会完成
【发布时间】:2011-07-07 16:31:00
【问题描述】:

当我通过浏览器手动启动脚本时,我的 PHP 脚本运行良好。但是当它通过 cronjob 运行时,它会启动,但直到脚本结束才会运行。

cronjob 和脚本执行肯定会开始(我已经对此进行了测试),但正如我所说:当脚本通过 cronjob 启动时,它直到脚本结束才会运行。

脚本已经有一个“set_time_limit(0)”,我也尝试了“ignore_user_abort(TRUE)”,但它根本没有帮助。

在此非常感谢您为解决此问题提供的所有支持。

詹妮弗

【问题讨论】:

  • 您是否使用strace 或同等工具查看过该流程以了解它在做什么?它是挂起、循环还是什么?
  • 没有看到脚本,我只是猜测工作。
  • 将其设置为永不超时,不会帮助它停止,反而会适得其反。
  • “但是当它通过 cronjob 运行时它会启动,但直到脚本结束才运行。” 编辑后,似乎有三个 'it'指代不同的事物

标签: php cron


【解决方案1】:

脚本总是在某个时间点结束。您是否尝试过加载 echo(__LINE__) 以查看它的进展情况?

【讨论】:

  • 好吧,当计算机断电时,它们不就完成了吗? :D 显然有些脚本是永久的,但如果一个脚本失败(如上),那么它就结束了
  • 对不起,我的描述不正确:我想说的是 PHP 脚本直到脚本结束时才运行,当它通过 cronjob 启动时。但是当我手动启动它时,它会一直运行到 PHP scipt 结束。
【解决方案2】:

检查您运行的用户/组并调用您的 php cron 作业,看看它是否满足路径环境变量。这可能是当前工作目录路径问题。有时在 Windows 中,您必须设置路径以在环境变量中包含安装路径以及您的 cron 作业路径。

【讨论】:

    【解决方案3】:

    您是使用 php 还是 wget 执行您的 php 文件?如果您使用 php,情况会有所不同,因为它需要不同的配置,并且该配置可能会设置内存限制,因此您的脚本会耗尽内存并停止/失败。

    实际上,直接使用php而不是wget,你可以指定你自己的php.ini文件来覆盖一些配置选项,在调用你的php时使用-c选项。在那里你应该增加你的内存限制,执行时间限制等等。

    阅读以下链接以查看您可以通过选择使用 /bin/php(或任何您的 php 路径)而不是 wget 来使用的所有选项:PHP Arguments

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多