创建任务调度
这里只介绍最简单任务调度创建。
找到App\Console下的Kernel.php文件里的schedule function
添加如下代码:
$schedule->call(function (){
Log::info('执行任务...');
})->everyMinute();
这样简单的任务已经创建好了。
配置crond
进入centos 8 后,运行命令:
crontab -e
进入如下界面
然后i 进入编辑模式,添加自己的crond,比如:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这样,每分钟就会执行一次: php artisan schedule:run
未执行成功原因
但是通过查看项目下的日志文件:/storage/logs/laravel.log , 里面一直没有打印:
执行任务…
而手动执行:
cd /path-to-your-project && php artisan schedule:run
却可以在日志里看到打印信息,说明我们的任务调度没有问题,只是在crond 下执行出了问题,第一个考虑的是:会不会是php的环境变量问题?如果在执行时加上php的环境变量是不是可以解决?
解决办法
尝试第一个解决办法:在crond执行命令里指定php。
第一步:先查看php的目录:
whereis php
结果为:
第二步:修改crond ,通过如下命令:
crontab -e
然后修改上面的命令为:
* * * * * /usr/local/php/bin/php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
然后重启crond
service crond restart
然后稍等一分钟,再去查看laravel的日志,就会看到已经有日志打印了。
** 还有一个方法跟踪一下crond的执行日志,使用命令:
tail -f /var/log/cron
完结…