Laravel 11 升级后 Horizon 作业陷入困境

问题描述 投票:0回答:1

我们在 Horizon 上配置了 Redis,与缓存的连接不同。最近我们从 Laravel 10 升级到 11。之前在 Laravel 10 上安排的所有作业都没有在 Laravel 11 上运行,并陷入待处理部分。新工作进展顺利。

我们检查了新作业是否写入正确的redis,具有相同的前缀,唯一发现的差异是在delay.dumpDateProperties.timezone上。旧工作有:

"timezone":"O:21:"Carbon\CarbonTimeZone":2:{s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}"
和新的只是
"timezone": "UTC"
。我们尝试直接在redis中使用HSET手动更改它,但仍然作业没有运行。

最后,地平线并没有真正提供手动运行待处理作业的方法。

任何想法将不胜感激!

php laravel redis laravel-11 horizon
1个回答
0
投票

经过一番挖掘发现了它。 显然,shift 删除了我们配置队列连接的queue.php 配置,因为 laravel 添加了默认连接。默认使用 .env var 来覆盖它,所以我们必须设置

REDIS_QUEUE_CONNECTION=queue
因为在我们的 database.php 中我们有

        'queue' => [
            'host' => env('QUEUE_REDIS_HOST', '127.0.0.1'),
            'password' => env('QUEUE_REDIS_PASSWORD', null),
            'port' => env('QUEUE_REDIS_PORT', 6379),
            'database' => 0,
            'scheme' => env('QUEUE_REDIS_SCHEME', 'tcp'),
        ],

在 Horizon.php 中

    'use' => 'queue',

仍然未知为什么 Laravel 11 调度的作业被调度到正确的 Redis 服务器中并正确运行......

© www.soinside.com 2019 - 2024. All rights reserved.