繁体   English   中英

Laravel 队列随机停止无异常

[英]Laravel queue stops randomly without exception

我有一个 laravel 队列设置

database

联系。 注意这个问题也在 redis 上。 但我目前正在使用数据库连接

failed_jobs

帮助我检查队列过程中发生的任何错误的表格。

我遇到的问题是队列在完成几项工作后停止工作,而没有任何消息显示原因。 但是当我重新启动命令(php artisan queue:work)时,它会拿起剩余的工作。 并继续。 (但稍后再次停止)

作业配置了这些值

public $tries = 1;
public $timeout = 10;

工作代码是,(不是原始代码)

    public function handle()
    {
        try {
            $file = //function to create file;
            $zip = new ZipArchive();
            $zip->open(//zip_path);
            $zip->addFile(//file_path, //file_name);
            $zip->close();
            @unlink(//remove file);
        } catch (\Exception $e) {
            Log::error($e);
        }
    }

失败的 function 设置如下:

public function failed(\Exception $exception)
{
    Log::error($exception);
    $this->fail($exception);
    $this->delete();
}

但是我没有 failed_job 行,而且我的日志是空的

编辑:我在每一行代码之后添加了简单的信息日志。 每次我开始排队时,它都会在最后一行之后停止。 所以代码运行正确。 所以 laravel 之后不会开始新工作

你试过queue:listen吗?

php artisan queue:listen

另外我想你需要主管来让你的工人活着。

所以你需要在这里解决这个问题是执行以下步骤:

  1. go引导/缓存/删除所有文件。PHP
  2. go 到 src 并运行 php artisan queue:restart
  3. 现在添加代码片段后,我们需要分别触发以下命令:
  • sudo supervisorctl reread (检查文件内容并确保片段设置正确)
  • sudo supervisorctl update (发布主管下的配置更改)
  • sudo supervisorctl restart all (重新触发队列,以便新创建的队列被初始化并开始分别接收消息)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM