如何配置Crontab每周四1pm执行getAllLostWill()发送邮件
你的Crontab命令问题解答
一、你给出的命令是错误的
你提供的命令00 01 1 1 * cd /var/www/lost-will-register && php artisan reminder:getAllLostWill >> /dev/null 2>&1对应的执行时间是每年1月1日凌晨1点,和你需求的「每周四下午1点」完全不符。
二、正确的Crontab配置方式
1. 先明确Crontab时间格式
Crontab的时间字段顺序为:分 时 日 月 周,各字段取值范围:
- 分:0-59
- 时:0-23(下午1点对应13)
- 日:1-31
- 月:1-12
- 周:0-7(0和7代表周日,4代表周四)
2. 直接配置Crontab调用Artisan命令
如果你的reminder:getAllLostWill命令已经正确实现并能调用目标方法,正确的Crontab命令为:
00 13 * * 4 cd /var/www/lost-will-register && php artisan reminder:getAllLostWill >> /dev/null 2>&1
这个表达式的含义是**每周四13:00(下午1点)**执行指定命令。
3. 更推荐的Laravel任务调度方式
Laravel自带的任务调度更便于统一管理所有定时任务,步骤如下:
- 打开
app/Console/Kernel.php,在schedule方法中添加任务:
protected function schedule(Schedule $schedule) { $schedule->call(function () { // 直接调用控制器的方法 app(\App\Http\Controllers\SendLostwillEmailsController::class)->getAllLostWill(); })->weeklyOn(4, '13:00'); // 每周四13点执行 }
- 确保你的Crontab中已经添加了Laravel调度器的基础触发命令(如果还没加):
* * * * * cd /var/www/lost-will-register && php artisan schedule:run >> /dev/null 2>&1
这条命令会每分钟运行一次Laravel调度器,由框架内部判断是否执行对应的定时任务。
内容的提问来源于stack exchange,提问作者user022yufjb
相关产品推荐
相关产品推荐

