Ale*_*lex 1 php scheduled-tasks laravel
每当我的应用程序运行php artisan schedule:run并成功将某些作业调度到我的任何队列中时,它都会以以下格式为其自身创建一个缓存条目:
laravel:framework/schedule-{SCHEDULE_HASH}在哪里SCHEDULE_HASH是32个随机字符串,我想知道此缓存键是否保存了一些有意义的数据,但仅将b:1;其保存为值。
此缓存值的目的是什么?据我所知,对计划的调用一旦完成,我们就并不在乎发生了什么,因为我的流程运行器将在60秒内重新运行,以查看是否需要计划任何新作业。
目前,这给我的Redis高速缓存添加了数百个密钥,如果可能,我想解决它。
我唯一可以想到的是,当schedule:run运行时,
Running scheduled command: '/usr/local/bin/php' artisan job:name > '/dev/null' 2?&1可能后半部分以某种方式使用Redis作为其存储目标,然后在其中管道传递新的缓存值1,我们将不胜感激。
更新:我想知道我正在使用的函数是否实际上是缓存互斥锁https://laravel.com/api/5.5/Illuminate/Console/Scheduling/Mutex.htmlonOneServer。唯一的事情是,即使我的工作完成后,互斥体也不会释放。
预定任务:
$schedule->command('shop:calculate_remaining_work', [$shop->id])
->cron('*/5 * * * *') // per 5 minutes
->onOneServer()
->withoutOverlapping();
Run Code Online (Sandbox Code Playgroud)
我希望命令完成运行后即可释放互斥锁,但事实并非如此,互斥锁会在缓存中保留1440分钟
https://laravel.com/docs/5.7/scheduling
在通话中,withoutOverlapping()您可以在几分钟内传递一个缓存过期值。
$schedule->command('emails:send')->withoutOverlapping(10);
Run Code Online (Sandbox Code Playgroud)