我使用缓存DatabaseStore通过Laravel Scheduler管理互斥文件。
我稍微修改了app / Console / Kernel.php来使它工作。
protected function defineConsoleSchedule()
{
$this->app->bind(SchedulingMutex::class, function() {
$container = Container::getInstance();
$mutex = $container->make(CacheSchedulingMutex::class);
return $mutex->useStore('database');
});
parent::defineConsoleSchedule();
}
我需要它能够在多个服务器上运行调度程序,但是它需要具有共享存储。由于我对所有服务器都有不同的Redis实例,因此我决定使用开箱即用的数据库缓存存储。 一切正常,但是即使缓存过期后,存储所有内容的名为 cache 的数据库表也无法清除。
这是桌子上的一些元组:
key value expiration
laravelframework/schedule-015655105069... b:1; 1539126032
laravelframework/schedule-015655105069... b:1; 1539126654
第一个有效期为1539126032(2018-10-09 23:00:32),当前时间为2018-10-10 08:09:45。我希望它会被清理。
问题是-我应该实现一些东西来维护该表还是Laravel应该处理它?如果这是Laravel的职责,我在做什么错了?