gpt4 book ai didi

php - Laravel 阻止计划 :run from adding key to cache

转载 作者:行者123 更新时间:2023-12-02 20:13:41 27 4
gpt4 key购买 nike

每当我的应用程序运行 php artisan Schedule:run 并成功将一些作业安排到我的任何队列上时,它都会以以下格式为自己创建一个缓存条目:

laravel:framework/schedule-{SCHEDULE_HASH} 其中 SCHEDULE_HASH 是一个随机的 32 个字符的字符串,我知道这个缓存键是否包含一些有意义的数据,但它仅始终将 b:1; 作为其值。

这个缓存值的用途是什么?据我所知,一旦对 Schedule 的调用完成,我们并不真正关心发生了什么,因为我的流程运行程序设置为在 60 秒内重新运行它,以查看是否需要安排任何新作业。

目前,该问题正在向我的 Redis 缓存发送数百个 key ,如果可能的话,我想解决它。

我唯一可能想到的是,当 schedule:run 运行时,那么运行计划命令:'/usr/local/bin/php' artisan job:name > '/dev/null' 2?&1 也许后半部分以某种方式使用Redis作为其存储目的地,然后管道那里有一个新的缓存值 1,任何帮助将不胜感激。

更新:我想知道我所看到的是否实际上是一个缓存互斥体 https://laravel.com/api/5.5/Illuminate/Console/Scheduling/Mutex.html因为我正在使用 onOneServer 函数。唯一的问题是,即使在我的工作完成后,互斥锁也没有被释放。

计划任务:

$schedule->command('shop:calculate_remaining_work', [$shop->id])
->cron('*/5 * * * *') // per 5 minutes
->onOneServer()
->withoutOverlapping();

我希望命令完成运行后就会释放互斥锁,但事实并非如此,互斥锁在缓存中保留了整整 1440 分钟

最佳答案

https://laravel.com/docs/5.7/scheduling

在调用 withoutOverlapping() 时,您可以传递一个以分钟为单位的缓存过期值。

$schedule->command('emails:send')->withoutOverlapping(10);

关于php - Laravel 阻止计划 :run from adding key to cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com