You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Horizon面板无任务显示问题求助(跨项目调度场景)

排查Laravel Horizon面板无任务数据的问题

核心排查步骤

  • 校验Redis配置与Horizon前缀一致性
    确认两个项目.env中的REDIS_HOST、REDIS_PORT、REDIS_DB、REDIS_PASSWORD完全匹配,Redis数据库编号差异会导致Horizon无法识别Project A推入的任务。同时确保HORIZON_PREFIX在两个项目中完全相同,该前缀是Horizon关联Redis队列数据的核心标识。

  • 检查Horizon监控队列范围
    打开Project B的config/horizon.php,查看environments配置块,确认其中的队列列表包含Project A调度任务时指定的队列名称。默认Horizon仅监控default队列,若A的任务推送到自定义队列(如task-processing)但Horizon未配置监控,面板将无数据。

    示例修正配置:

    'environments' => [
        'local' => [
            'supervisor-1' => [
                'maxProcesses' => 3,
                'queue' => ['default', 'task-processing'], // 补充目标队列名
            ],
        ],
    ],
    

    修改后执行php artisan horizon:terminate终止现有Horizon进程,再重新启动php artisan horizon。

  • 确认任务由Horizon进程处理
    同时运行queue:work和horizon时,任务可能被queue:work进程抢占处理,导致Horizon无执行记录。先停止queue:work进程,仅保留Horizon运行,重新触发任务后查看面板数据。

  • 验证Redis队列数据状态
    登录Homestead的Redis服务(执行redis-cli),用KEYS "{你的HORIZON_PREFIX}:*"查看Horizon相关键值,再用KEYS "queues:*"检查队列数据是否存在。若队列数据存在但Horizon键值缺失,说明Horizon未正确连接Redis。

  • 清理Horizon专属缓存
    除optimize:clear外,执行php artisan horizon:clear清理Horizon专属缓存,随后重启Horizon服务。同时确认Project B的config/queue.php中Redis驱动配置正确引用.env参数:

    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],
    

内容的提问来源于stack exchange,提问作者kamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:24:55