LaraveSupervisorDashbord
做了一个查看 Laravel 进程状态和异步脚本队列数量的小工具:https://github.com/suren1986/laravel-supervisor-dashboard。
做了一个查看 Laravel 进程状态和异步脚本队列数量的小工具:https://github.com/suren1986/laravel-supervisor-dashboard。
有时跑一些很耗费时间的异步脚本,会在 artisan queue:listen
时通过 --timeout=3600
设置长一点的时间,以避免超时。
如果: 1. 使用 Redis 存放 queue 信息; 2. 跑了多个进程 artisan queue:listen --timeout=3600
;3. 监听同一个 queue;4. Job 的时间超过 60 秒。就会发生同一个脚本被运行多次的情况。
Illuminate\RedisQueue
完成的。public function pop()
。time() + this->expire
,默认的 this->expire = 60,Laravel 官方的配置中(config/queue.php),也默认了 60 秒。解决方法很简单,将 config/queue.php,相应配置的 expire 设置为 null 即可。
因为 Illuminate\RedisQueue
中,如果 expire 为 null,是不会做将将所有过期的 Job 放回到原来的 queue 中的操作的。