laravel如何执行超长时间代码
laravel如何执行超长时间代码
一、总结
一句话总结:
laravel可以用【自定义队列】执行超长时间代码,并且【expire设置为0】
'cust' => [ 'driver' => 'redis', 'connection' => 'queue', 'queue' => 'cust', 'expire' => 0, ],
二、laravel如何执行超长时间代码
转自或参考:https://learnku.com/laravel/t/28377
(一)、需求
1. 后台执行,并且可以随时查询执行进度.
2. 这个超长时间 可能是 5 分钟或者 1 个小时.
需求主要是从网站后台 web 方式点击执行,让其可以在后台运行,这样我 web 可以关闭,后期随时来查看执行状态
(二)、解决
自定义队列
估计要采用自定义 queue,supervisor 单独运行一个
php artisan queue:work --queue=cust ... 这样就可以和其他的队列区分开了
然后代码里
dispatch((new Job)->onQueue('cust'));
config/queue.php 里面设置这个多 queue
'cust' => [
'driver' => 'redis',
'connection' => 'queue',
'queue' => 'cust',
'expire' => 0,
],