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

Laravel Octane队列未检测到数据库连接IP变更问题求助

解决Laravel Octane队列任务仍使用旧数据库IP的问题

以下是针对你的场景(Laravel ^11.0 + Octane ^2.2 + FrankenPHP + RabbitMQ)的具体解决方案:

  • 重启Supervisor管理的队列工作进程
    Supervisor托管的队列进程是常驻内存的,启动时会一次性加载环境配置,修改数据库IP后不会自动重新读取。执行以下操作:

    1. 用supervisorctl status查看你的队列进程名称(比如laravel-worker)
    2. 执行重启命令:supervisorctl restart laravel-worker:*
  • 重启Octane服务(若用Octane运行队列)
    如果你是通过Octane启动队列进程(而非单独的queue:work),Octane的常驻进程会缓存初始配置,需要重启Octane:

    php artisan octane:stop
    php artisan octane:start --server=frankenphp --workers=4 --queue=default
    

    注意:根据你的实际启动参数调整--workers和--queue的值。

  • 清除配置缓存
    若之前执行过config:cache生成了配置缓存文件,队列进程会读取缓存的静态配置而非最新的.env。执行命令清除缓存:

    php artisan config:clear
    

    清除后务必重启队列进程,确保新配置生效。

  • 检查Supervisor配置是否硬编码旧IP
    打开Supervisor的队列配置文件(通常路径为/etc/supervisor/conf.d/laravel-worker.conf),检查是否存在硬编码的数据库环境变量,比如:

    environment=DB_HOST=192.168.1.100
    

    若有,将IP修改为新地址,然后重启Supervisor服务:systemctl restart supervisor

  • 验证队列进程的环境变量
    确认队列进程是否加载了新的数据库IP:

    1. 查找队列进程PID:ps aux | grep queue:work
    2. 查看进程环境变量:cat /proc/[PID]/environ | tr '\0' '\n' | grep DB_HOST
      若输出仍为旧IP,说明进程未正确重启或配置未更新,重复上述步骤排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:43:17