laravel批处理任务开启多个work后执行不完整

1. 运行环境

1). 当前使用的 Laravel 版本?

php 7.3.9

2). 当前使用的 php/php-fpm 版本?

PHP 版本:
php 7.3.9

php-fpm 版本:
php 7.3.9

3). 当前系统

windows 10

4). 业务环境

5). 相关软件版本

laravel 8.5

2. 问题描述?

当开启多个work即启动多个php artisan queue:work redis --queue=test命令时,批任务处理不完整,一直未等到任务执行完成,但是开启单个work任务执行是完整的

  1. 任务触发

    $arr = [];
    for($i=0;$i<300;$i++){
    $arr[] = new TestJob();
    }
    $batch = Bus::batch($arr)->then(function (Batch $batch) {
    // 所有任务都成功完成...
    Log::info('batch--'.'执行完成');
    })->catch(function (Batch $batch, Throwable $e) {
    // 检测到第一批任务失败...
    Log::info($e->getMessage());
    })->finally(function (Batch $batch) {
    // 批处理已完成执行...
    })->onConnection('redis')->onQueue('test')->dispatch();
  2. 任务代码,TestJob里的执行内容

    public function handle()
    {
    if ($this->batch()->cancelled()) {
    // Determine if the batch has been cancelled...
    Log::info('cancelled');
    return;  }
    
    Log::info($this->batch()->id);
    // 导入 CSV 文件的一部分...
    }

3. 您期望得到的结果?

理论上应该获得300行打印记录

laravel批处理任务开启多个work后执行不完整

4. 您实际得到的结果?

实际获取的不到300行,每次数量不一

5. 更换环境

在linux上测试批任务处理,用supervisor开启多个work,没有发现pending_jobs了,但是then,catch,finally里面的回调方法都不执行,windows里面开启单个work还能执行的

laravel批处理任务开启多个work后执行不完整

laravel批处理任务开启多个work后执行不完整

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

file

file每次执行都有pending_jobs

1年前 评论

用行了判断有点不认真吧,为啥不直接输出12345-300来看!

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!