请教下,Laravel 如何让程序在后台执行超长时间的代码?
1.后台执行,并且可以随时查询执行进度.
2.这个超长时间 可能是5分钟或者1个小时.
考虑过队列,不过如果设置时长针对这个超长任务的话,又对普通队列产生影响了.
各位大佬怎么解决,或者有没有扩展包呢
Laravel 支持 CLI 模式,你可以在 CLI 模式下执行超长任务
PHP Command Line Interface了解一下,包括 laravel 提供了Artisan Console可以直接实现,以及官方支持执行进度条,可以很好的解决你目前的问题。
自定义队列
感谢各位,忘了补充一点,我的需求主要是从网站后台web方式点击执行,让其可以在后台运行,这样我web可以关闭,后期随时来查看执行状态
@zlxiche Job+Horizon
感谢各位.
估计要采用自定义queue,supervisor 单独运行一个
php artisan queue:work --queue=cust ...
这样就可以和其他的队列区分开了然后代码里
dispatch((new Job)->onQueue('cust'));
晚上试试时间能不能支持1个小时的
然后 Laravel Horizon 监控进度
问题来了 config/queue.php 里面如何设置这个多 queue呢...
原来是在 queue.php 这样加就行了,完美~~
@arunfung 有什么方法可以监控到进度条进度么,任务进度我需要反馈到相关终端上。