请教下,Laravel 如何让程序在后台执行超长时间的代码?

weixin_38053953 2019-09-18 03:51:40
1.后台执行,并且可以随时查询执行进度. 2.这个超长时间 可能是5分钟或者1个小时. 考虑过队列,不过如果设置时长针对这个超长任务的话,又对普通队列产生影响了. 各位大佬怎么解决,或者有没有扩展包呢
...全文
206 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38104476 2019-09-18
  • 打赏
  • 举报
回复
感谢各位. 估计要采用自定义queue,supervisor 单独运行一个 php artisan queue:work --queue=cust ... 这样就可以和其他的队列区分开了 然后代码里dispatch((new Job)->onQueue('cust')); 晚上试试时间能不能支持1个小时的 然后 Laravel Horizon 监控进度
weixin_38107492 2019-09-18
  • 打赏
  • 举报
回复
问题来了 config/queue.php 里面如何设置这个多 queue呢... 'redis' => [ 'driver' => 'redis', 'connection' => 'queue', 'queue' => 'default', 'expire' => 60, ],
weixin_38138311 2019-09-18
  • 打赏
  • 举报
回复
原来是在 queue.php 这样加就行了,完美~~ 'cust' => [ 'driver' => 'redis', 'connection' => 'queue', 'queue' => 'cust', 'expire' => 0, ],
weixin_38056905 2019-09-18
  • 打赏
  • 举报
回复
Laravel 支持 CLI 模式,你可以在 CLI 模式下执行超长任务
weixin_38068996 2019-09-18
  • 打赏
  • 举报
回复
PHP Command Line Interface了解一下,包括 laravel 提供了Artisan Console可以直接实现,以及官方支持执行进度条,可以很好的解决你目前的问题。 #### Progress Bars $users = App\User::all(); $bar = $this->output->createProgressBar(count($users)); $bar->start(); foreach ($users as $user) { $this->performTask($user); $bar->advance(); } $bar->finish();
weixin_38087592 2019-09-18
  • 打赏
  • 举报
回复
自定义队列
weixin_38089851 2019-09-18
  • 打赏
  • 举报
回复
感谢各位,忘了补充一点,我的需求主要是从网站后台web方式点击执行,让其可以在后台运行,这样我web可以关闭,后期随时来查看执行状态

473

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧