【问题标题】:Cronjob not executing php?Cronjob 不执行 php?
【发布时间】:2015-11-30 08:34:42
【问题描述】:

我想在 Ubuntu 上使用 cron 作业每 10 分钟运行一次 .php。 这是我的 crontab:

*/10 * * * * php -f  /var/www/html/gapi/src/test2.php >/dev/null 2>&1

这是在日志文件中:

CRON[9994]: (root) CMD (php -f  /var/www/html/gapi/src/test2.php >/dev/null 2>&1)

在这个 php 中是一个 api 调用,我可以在 api 提供者的仪表板上看到实时的 api 调用,所以我知道 php 不是每 10 分钟运行一次。

我将文件权限设置为 755,我还能做些什么来让它工作?

更新的 Crontab:

*/10 * * * * php -f  /var/www/html/gapi/src/test2.php

【问题讨论】:

  • In this php is an api call 到底是什么意思?听起来您正在通过网络服务器监视任何访问,但正在从命令行调用脚本。如果是这种情况,请将您的请求更改为使用 wget 通过您的网络服务器请求它。
  • 首先不要将潜在的错误输出转储到/dev/null,您可能会明白为什么它不起作用。
  • @Eborbob 这听起来像是原因,您能否创建一个更详细的答案?我正在使用 Google API 获取一些数据,如果我用浏览器打开文件,它可以正常工作。
  • @deceze 我编辑了它。
  • 那么,出现任何错误消息了吗?

标签: php ubuntu cron crontab cron-task


【解决方案1】:

尝试通过您的网络服务器请求文件,而不是通过命令行 PHP 解释器调用脚本。

*/10 * * * * wget -q -O /dev/null http://localhost/gapi/src/test2.php

-q 禁止输出,-O /dev/null 重定向文件输出,因此不保存)

或改用curl

*/10 * * * * curl --silent http://localhost/gapi/src/test2.php

该 URL 将取决于您的服务器的设置方式 - 您说它目前可以通过您的浏览器运行,因此只需在 cron 文件中使用相同的 URL。

【讨论】:

  • curl 会做得更好
  • @OkiErieRinaldi 为什么 curl 更好?它会是什么样子?
  • FWIW, "-q" 将使 wget 静音并停止它输出标题等。我会避免将输出转储到 /dev/null - 脚本在正常操作时应该保持静音 - 所以至少有人在行为不端时会收到一封电子邮件...
  • @OkiErieRinaldi 我添加了一个使用curl 的示例。任君挑选。
  • 当一个简单的 CLI 调用应该做时,没有必要,有时甚至不可能涉及 Web 服务器。这是一个疯狂的解决方法。
猜你喜欢
  • 2012-08-07
  • 2023-03-20
  • 2016-12-31
  • 1970-01-01
  • 2018-06-30
  • 2017-12-01
  • 2015-04-17
  • 2021-01-22
  • 1970-01-01
相关资源
最近更新 更多