Dashuang Du.
Dashuang Du.

study and practice, years of it.

Laravel 学习笔记 —— 任务调度

Laravel 学习笔记 —— 任务调度

2017, Feb 07    

1.在 App\Console\Kernel.php 中编写 laravel 代码

protected function schedule(Schedule $schedule)
{
   $schedule->call(function () {
      \Log::info('任务调度test');
   })->everyMinute();
 }

2.在服务的 /var/spool/cron/root 文件中添加代码

crontab -e

输入以下代码:

#唯一一个需要加入到服务器的 Cron 项目

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

查看 crond 列表

crontab -u root -l


[root@iZuf6]# crontab -u root -l
* * * * * php /var/www/html/XYJ/artisan schedule:run >> /dev/null 2>&1
[root@iZuf6]#
	

不需要重启 cron 服务,因为系统每分钟都会读一遍 /var/spool/cron 目录下的文件。

如果发现按照如下配置还是不能执行的话,可以用以下方法排除问题:

看一下命令有没有使用绝对路径,比如这里使用 /usr/local/php/bin/php 而不是 php,使用 /data/wwwroot/test/artisan 而不是 artisan

如果已经使用了绝对路径还是不执行,那就直接在命令行输入 /usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1,看看有没有执行,如果没有执行,那就是 laravel 代码的问题, 如果执行了说明是环境变量的问题,好好检查路径的问题。如果不知道 php 在什么地方,在命令行输入 which php,就会提示你 php 安装在什么位置了。