Jan*_*łek 5 php schedule laravel
当我使用php artisan schedule:run
命令时,shuffleQuoteOfTheDay
方法被评估一次,然后它不会每分钟触发它.
内核@ schedule方法
protected function schedule(Schedule $schedule)
{
$schedule->call('App\Services\MotivationalQuoteService@shuffleQuoteOfTheDay')->everyMinute();
}
Run Code Online (Sandbox Code Playgroud)
MotivationalQuoteService @ shuffleQuoteOfTheDay方法
public function shuffleQuoteOfTheDay(){
$currentQuoteOfADay = $this->getQuoteOfTheDay();
$randomQuote = MotivationalQuote::where('quote_of_the_day',false)->inRandomOrder()->first();
$currentQuoteOfADay->update(['quote_of_the_day' => false]);
$randomQuote->update(['quote_of_the_day' => true]);
return $randomQuote;
}
Run Code Online (Sandbox Code Playgroud)
它确实工作了一次,但不是每一分钟,我创造了工作表.有人帮我这个吗?提前谢谢你.
请参阅任务调度:
这是您需要添加到服务器的唯一 Cron 条目:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
这个 Cron 每分钟都会调用 Laravel 命令调度程序。然后,Laravel 会评估您的计划任务并运行到期的任务。
Laravel 的任务调度器不会留在内存中,它需要每分钟运行一次。然后它将检查在那一分钟内需要运行哪些任务并运行它们。当您使用 PHP 运行任务调度程序时,它只运行一次,它需要 cron 每分钟运行一次。
如果您的开发机器是 linux 机器/宅基地,那么您可以在本地进行测试。
添加 cron 作业:
$ crontab -e
Run Code Online (Sandbox Code Playgroud)
然后添加 * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
到crontab文件并保存。
不要忘记启动/重新加载 cron 服务。
在 Ubuntu 上:
$ sudo service cron reload
Run Code Online (Sandbox Code Playgroud)
您需要进行设置,cron
以便它可以每分钟运行该php artisan schedule:run
命令。
来自文档:
使用调度程序时,您只需将以下 Cron 条目添加到您的服务器即可。如果您不知道如何将 Cron 条目添加到服务器,请考虑使用 Laravel Forge 等服务,它可以为您管理 Cron 条目:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
这个 Cron 每分钟都会调用 Laravel 命令调度程序。当执行schedule:run命令时,Laravel将评估你的计划任务并运行到期的任务。
归档时间: |
|
查看次数: |
2593 次 |
最近记录: |