【问题标题】:Running codeigniter 3 cron job issue运行 codeigniter 3 cron 作业问题
【发布时间】:2017-11-26 23:44:12
【问题描述】:

我正在尝试运行 codeigniter 3 cron 作业。如果我手动打开文件,它可以通过浏览器运行,我发现数据库已更新并已发送电子邮件

https://www.example.com/module_name/controller/method

但不能像这样在私人服务器上每分钟完成一次 cron 作业

curl --silent https://www.example.com/module_name/controller/method

也试过了

/usr/local/bin/php /home/username/public_html/index.php module_name controller method

有什么想法或其他方式来运行它吗?

【问题讨论】:

  • 在服务器上打开一个命令行窗口,然后运行作业,就像你是 cron 一样。然后,如果有错误,您将更有可能看到它们。 PHP 有时可以为cli (command line interface) 使用不同的ini 配置,因此您可能会遇到任何数量的环境问题。如果可能,我个人会避免使用curl。但这取决于curl 应该使用普通的ini 运行它,就像browser 一样。我不喜欢使用curl,因为这个和其他原因。
  • 你不应该在linux 上需要所有这些/usr/local/bin/php,或者至少我看到的大多数服务器已经设置好了,你可以在其中做php {path to file}
  • 其实不问其他的方法,而是问一个工作方法,因为我用的不起作用我会尝试测试和回复。谢谢
  • 我没有告诉你other ways。 cron 的问题是它发生在黑暗中,你看不到脚本输出,对。因此,如果您在命令行上手动运行它,使用与 cron 相同的命令。然后你把它暴露出来......例如,如果你在命令行上运行它并显示class Pdo not found,那么你就会知道php-cli.ini文件没有启用pdo。等等......可能有十亿个原因导致它不起作用。说它不起作用并不能真正缩小范围。

标签: php codeigniter cron


【解决方案1】:

我首先会去一个终端并通过运行检查您的 php 是否实际上位于 /usr/local/bin/php:

which php

您提到您想知道运行 cron 的其他方法,我已经多次使用 wget。对你来说,这看起来像:

/usr/bin/wget https://www.example.com/module_name/controller/method -O /dev/null

在大多数(所有?)Linux 发行版中,您将使用以下命令打开 crontab 进行编辑:

crontab -e

进入后,只需添加一行:

* * * * * /usr/bin/wget https://www.example.com/module_name/controller/method -O /dev/null

请确保您有 wget 可用,并通过运行来确定它的位置:

which wget

【讨论】:

  • -O /dev/null 是什么我一直使用>/dev/null 2>&1。曾经是 CentOs 5 会在大约 2MB 的输出后使 cron 崩溃(如果我记得可能是 2G 的话),我不使用 wget,所以它是等价的。基本上扔掉输出?
  • 是的,对于 wget 你需要 -O 参数。查看 wget 的手册页以查看详细信息。 >/dev/null 2>&1 在使用 wget 时仍会输出。我知道这很奇怪,但我以前也遇到过,我就是这么知道的。
  • Kool,就像我说的,我从不使用wget 运行命令行的东西,我只使用php。我只是好奇。
  • 我不喜欢使用 wget 运行 crons,但我不得不在托管环境中使用 crons,这些环境非常糟糕,以至于 wget 在没有其他方法的情况下工作。
猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 2017-05-25
  • 2013-03-05
  • 2017-06-25
  • 2011-01-15
  • 2016-09-14
相关资源
最近更新 更多