运行 PHP macOS 和 MAMP 上的 Cron 作业

Run a PHP Cron Job on macOS & MAMP

我正在尝试 运行 macOS 上的 cron 作业和使用 MAMP 在本地托管的网站。

我已经尝试了多种选择,none都没有用;请看下面:

*/1 * * * * php http://mylocalsite.com/cron/my_function

*/1 * * * * /usr/bin/curl –silent –compressed http://mylocalsite.com/cron/my_function

*/1 * * * * /usr/bin/curl --silent --compressed http://mylocalsite.com/cron/my_function

*/1 * * * * /Applications/MAMP/bin/php/php7.1.12/bin/php http://mylocalsite.com/cron/my_function > /dev/null 2>&1

*/1 * * * * wget --no-check-certificate -O- https://mylocalsite.com/cron/my_function >> /dev/null

当我在终端中 运行 以下内容时,它确实有效:

wget --no-check-certificate -O- https://mylocalsite.com/cron/my_function >> /dev/null

我知道 URL 执行我想要的功能,因为我已经在浏览器中直接测试过它。

我做错了什么以及为了 ping/run 指定的 URL 应该在 crontab 中输入什么?

CodeIgniter 手册建议 运行 通过命令行使用 CodeIgniter 是可能的。

他们编写了以下脚本:

<?php
class Tools extends CI_Controller {

        public function message($to = 'World')
        {
                echo "Hello {$to}!".PHP_EOL;
        }
}

他们依次在服务器上执行这样的脚本:

$ cd /path/to/project;
$ php index.php tools message

其中 tools 表示控制器,message 表示操作。

所以在那种情况下,crontab 条目将变为:

*/1 * * * * cd /path/to/project; php index.php tools message

在问题中描述的情况下:

*/1 * * * * cd /path/to/project; php index.php cron my_function

来源:https://www.codeigniter.com/user_guide/general/cli.html

我喜欢做的事情是:

  1. 确保您使用 brew 安装了 php(brew install php@version(我使用 php@7.4))
  2. 检查您是否有 crontab,否则使用 brew install crontab
  3. 安装
  4. 在终端中输入 crontab -l,这将打开一个 vim 编辑器。如果您似乎无法输入任何内容,请按 i 键。然后开始输入如下命令: */1 * * * * cd /path/to/project; php index.php
  5. :然后输入wq回车保存退出vim,变成:wq
  6. 在终端
  7. 中使用crontab -e检查cronjob

其他详细信息here(for crontab) and here(for vim)