问题描述
我创建了此函数,但是当我执行以下命令时它只能工作一次:
php artisan schedule: run
我必须做点什么才能继续自动进行吗?当您只进入该站点一次并独自运行时,它会自动触发吗?
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
$dias1 = \Carbon\Carbon::today()->subDays(5);
$dias2 = \Carbon\Carbon::today()->subDays(15);
$encomendasnaopagas = encomendas::where('estado',1)->where('updated_at','<',$dias1)
->join('distritos','encomendas.distrito','=','distritos.id')
->update(['estado' => 5]);
$encomendasenviadas = encomendas::where('estado',3)->where('updated_at',$dias2)
->join('distritos','distritos.id')
->update(['estado' => 4]);
})->everyMinute();
}
解决方法
这可能是您在使调度程序保持运行状态中丢失的东西
使用调度程序时,只需要将以下Cron条目添加到服务器。如果您不知道如何向服务器添加Cron条目,请考虑使用Laravel Forge之类的服务来为您管理Cron条目:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
此Cron将每分钟调用一次Laravel命令调度程序。当执行schedule:run命令时,Laravel将评估您计划的任务并运行到期的任务。
您将需要在crontab
或类似的cron管理系统中设置一个条目。