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

1.后台执行,并且可以随时查询执行进度.
2.这个超长时间 可能是5分钟或者1个小时.

考虑过队列,不过如果设置时长针对这个超长任务的话,又对普通队列产生影响了.

各位大佬怎么解决,或者有没有扩展包呢

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 8

Laravel 支持 CLI 模式,你可以在 CLI 模式下执行超长任务

1周前
arunfung

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();
1周前
mysql

自定义队列

1周前

感谢各位,忘了补充一点,我的需求主要是从网站后台web方式点击执行,让其可以在后台运行,这样我web可以关闭,后期随时来查看执行状态

1周前
代码如诗人生如歌

@zlxiche Job+Horizon

1周前

感谢各位.

估计要采用自定义queue,supervisor 单独运行一个

php artisan queue:work --queue=cust ... 这样就可以和其他的队列区分开了

然后代码里
dispatch((new Job)->onQueue('cust'));

晚上试试时间能不能支持1个小时的
然后 Laravel Horizon 监控进度

1周前

问题来了 config/queue.php 里面如何设置这个多 queue呢...

'redis' => [
        'driver' => 'redis',
        'connection' => 'queue',
        'queue' => 'default',
        'expire' => 60,
    ], 
1周前

原来是在 queue.php 这样加就行了,完美~~

'cust' => [
        'driver' => 'redis',
         'connection' => 'queue',
        'queue' => 'cust',
        'expire' => 0,
    ],
1周前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会