运行 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
我喜欢做的事情是:
- 确保您使用 brew 安装了 php(
brew install php@version
(我使用 php@7.4))
- 检查您是否有 crontab,否则使用
brew install crontab
安装
- 在终端中输入
crontab -l
,这将打开一个 vim 编辑器。如果您似乎无法输入任何内容,请按 i
键。然后开始输入如下命令:
*/1 * * * * cd /path/to/project; php index.php
- 按
:
然后输入wq
回车保存退出vim,变成:wq
- 在终端
中使用crontab -e
检查cronjob
其他详细信息here(for crontab) and here(for vim)
我正在尝试 运行 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
我喜欢做的事情是:
- 确保您使用 brew 安装了 php(
brew install php@version
(我使用 php@7.4)) - 检查您是否有 crontab,否则使用
brew install crontab
安装
- 在终端中输入
crontab -l
,这将打开一个 vim 编辑器。如果您似乎无法输入任何内容,请按i
键。然后开始输入如下命令:*/1 * * * * cd /path/to/project; php index.php
- 按
:
然后输入wq
回车保存退出vim,变成:wq
- 在终端 中使用
crontab -e
检查cronjob
其他详细信息here(for crontab) and here(for vim)