ive laravel队列正在运行,但在数据库连接上,以下是配置:
'database' => [
'driver' => 'database',
'connection' => 'mysql',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 190,
'block_for' => 0,
]
我是这样运行的:
php artisan queue:work --queue=xyz_queue > storage/logs/queue.log
在redis cli上,这是每秒发生的事情:
1条答案
按热度按时间k3bvogb11#
这是正常和预期的行为。根据文件
由于队列工作进程是长寿命的进程,因此它们不会在不重新启动的情况下获取对代码的更改。因此,使用队列工作者部署应用程序的最简单方法是在部署过程中重新启动工作者。您可以通过发出queue:restart command:
php artisan queue:restart
此命令将指示所有队列工作人员在完成当前作业的处理后优雅地“死亡”,以便不会丢失现有作业。什么
queue:restart
是否将当前时间戳设置为illuminate:queue:restart
钥匙。当队列即将被进程占用时(
php artisan queue:work
)它从illuminate:queue:restart
在作业即将完成后,它将从同一个键再次获取值。它比较处理作业前的值与处理作业后的值是否相同。
如果它是不同的,那么它将停止长寿命的过程。
这是一种有效的方法(因为redis对于这种场景来说速度非常快),可以检测代码是否发生了更改,以及是否应该为代码的更改更新作业。
它将值保存到redis中的原因,“很可能”您的缓存驱动程序是redis。如果你把它改成
file
然后它将保存在文件中,并对该文件发出get请求。以下是相关方法;