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

执行php artisan cache:clear后如何保留Laravel Horizon面板数据?

问题解决方案

一、执行php artisan cache:clear不清除Horizon数据

你的缓存与Horizon共用了同一个Redis数据库(REDIS_DATABASE=10),所以缓存清除操作会连带删除Horizon的监控数据。解决思路是给Horizon单独分配Redis连接:

  1. 在config/database.php中新增Horizon专属Redis连接
    在redis配置数组里添加:

    'horizon' => [
        'url' => env('REDIS_URL'),
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', '6379'),
        'database' => env('REDIS_HORIZON_DATABASE', 11), // 使用与缓存不同的数据库编号
        'prefix' => env('REDIS_KEY', 'oqmm') . ':',
    ],
    
  2. 修改Horizon配置使用新连接
    打开config/horizon.php,找到use选项并修改:

    'use' => 'horizon',
    
  3. 更新环境变量(可选)
    在.env文件中新增:

    REDIS_HORIZON_DATABASE=11
    

完成后,php artisan cache:clear只会清除默认Redis数据库(10)的缓存,Horizon的数据存储在11库中,不会被影响。

二、切换到database队列后Horizon面板无数据

Horizon默认仅监控Redis队列,要支持database队列,需在Horizon配置中添加对应supervisor:

  1. 更新Horizon的supervisor配置
    在config/horizon.php的environments.local数组里新增一个supervisor:

    'local' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['default'],
            'balance' => 'auto',
            'processes' => 3,
            'tries' => 3,
        ],
        'supervisor-db' => [ // 新增database队列的supervisor配置
            'connection' => 'database',
            'queue' => ['default'],
            'balance' => 'simple',
            'processes' => 2,
            'tries' => 3,
        ],
    ],
    
  2. 确保database队列的表已生成
    若未创建队列相关数据表,执行以下命令:

    php artisan queue:table
    php artisan queue:failed-table
    php artisan migrate
    
  3. 重启Horizon进程
    先终止现有Horizon进程:

    php artisan horizon:terminate
    

    再重新启动Horizon:

    php artisan horizon
    

提交database队列任务后,Horizon面板即可显示对应数据。

三、其他队列GUI工具

如果Horizon不符合需求,可选择以下工具:

  • Laravel Telescope:Laravel官方调试工具,内置队列监控功能,支持查看任务状态、执行日志、失败原因,兼容所有队列连接类型。安装命令:composer require laravel/telescope --dev,随后发布配置:php artisan telescope:install。
  • Queue Monitor:第三方包(laravel-queue-monitor),专注队列监控,提供任务列表、执行统计、失败重试按钮,支持多种队列驱动。
  • Supervisor Web UI:若用Supervisor管理队列进程,可通过supervisor-web类工具查看进程运行状态,适合监控进程存活情况,但不提供任务级详情。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:28:00