作者:fffsssjjj | 来源:互联网 | 2023-09-06 12:29
Laravel任务调度(定时任务)遇到的坑记录一下自己在第一次使用laravel的调度任务遇到的坑~~这里做一个简单任务调度,我这里的需求是这样的,需要自动调用控制器的一个方法
Laravel 任务调度(定时任务)遇到的坑
记录一下自己在第一次使用laravel的调度任务遇到的坑~~
这里做一个简单任务调度,我这里的需求是这样的,需要自动调用控制器的一个方法,需要每天定时发送公众号模板消息
那么我需要如下步骤:
1、在App\Console\Kernel.php中编写laravel代码
protected function schedule(Schedule $schedule)
{$schedule->call('App\Http\Controllers\Index\UserController@send_sgin_Mamage')->at('7:30')->weekdays();$schedule->call('App\Http\Controllers\Index\UserController@send_sgin_Mamage')->at('11:30')->weekdays();$schedule->call('App\Http\Controllers\Index\UserController@send_sgin_Mamage')->at('12:30')->weekdays();$schedule->call('App\Http\Controllers\Index\UserController@send_sgin_Mamage')->at('17:00')->weekdays();}
里面含有很多的定时规则,详情可以查看
https://learnku.com/docs/laravel/5.8/scheduling/3924 调度频率设置
2、在服务的/var/spool/cron/root文件中添加代码
注意:这里最好使用vim编辑器编辑文件,如果使用winscp编辑文件,会出现不执行任务的问题。
使用vim教程链接:http://www.cnblogs.com/zzdylan/p/5941706.html
在命令行输入
crontab -e
添加如下代码
* * * * * /usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1
在命令行输入
crontab -u root -l
不需要重启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安装在什么位置了。
这里主要这里记录一下,继续变秃,加油!