Laravel5.6 使用 horizon 管理队列重启后依然沿用旧代码?

各位laraveler:

基本环境:

  • Centos5.6
  • Lravel5.6 (备注从5.5升级而来),
  • horizon: ^1.0
  • Supervisor 管理进程
  • PHP有使用opcache缓存

horizon配置(删除了注释)

<?php
return [
    'use' => 'default',
    'prefix' => env('HORIZON_PREFIX', 'horizon:'),
    'waits' => [
        'redis:default' => 60,
    ],
    'trim' => [
        'recent' => 60,
        'failed' => 10080,
    ],
    'environments' => [
        'production' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default'],
                'balance' => 'simple',
                'processes' => 10,
                'tries' => 3,
                'timeout' => 0,
            ],
        ],
        'local' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default'],
                'balance' => 'false',
                'processes' => 1,
                'tries' => 3,
                'timeout' => 0,
            ],
        ],
    ],
];

.env 文件相关配置

QUEUE_DRIVER=redis

问题

重启了队列之后, 新添加的代码并没有生效, 我尝试使用的重启方式有以下三种方式:

  • php artisan horizon:terminate
  • supervisorctl restart all
  • php artisan queue:restart
    都不生效, 已经清除过opcache的缓存, 想请教各位队友, 遇到这样的问题到底该如何解决!
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
宇宙最厉害

今天也遇到这个问题了,我这边一步一步调试后发现,队列里面不要传预加载的 Eloquent ORM 对象。因为会在队列启动的时候去预加载,然后,错误的情况可能发生在这里。

4年前 评论

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