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

Windows环境下Laravel Queue后台运行方案咨询:forever命令可行性及替代方案

在Windows生产环境运行Laravel Queue的方案分享

我在生产环境里试过用forever来托管Laravel Queue,也折腾过更稳定的Windows原生方案,给你分享下实际体验和可选方案:

关于forever方案的实际体验

这个方案是可行的,但有几个需要注意的细节:

  • 前提是得在Windows上装好Node.js,然后全局安装forever:npm install -g forever
  • 命令要注意路径问题:如果你的php.exe不在系统环境变量里,必须写完整路径,比如forever -c "C:\Program Files\PHP\php.exe" artisan queue:listen --tries=3,不然forever会找不到PHP执行程序
  • 稳定性方面:日常运行没问题,forever会帮你重启崩溃的进程,但服务器重启后不会自动启动,你得自己配置开机启动——比如用Windows任务计划程序创建一个开机触发的任务,执行forever的启动命令(记得用管理员权限)
  • 日志排查:forever会生成自身的运行日志,但建议同时配置好Laravel Queue的日志(在.env里设置LOG_CHANNEL),方便定位队列任务的具体问题

生产环境更推荐的方案:注册为Windows原生服务

如果追求长期稳定性和运维便利性,用NSSM(Non-Sucking Service Manager)把Laravel Queue注册成Windows服务是更好的选择,这也是我现在生产环境一直在用的方案:

  • 操作步骤很直观:
    1. 下载NSSM(免费开源工具),解压到某个固定路径(比如C:\nssm),把这个路径添加到系统环境变量里
    2. 以管理员身份打开命令提示符,切换到你的Laravel项目根目录
    3. 执行nssm install LaravelQueueWorker,会弹出图形配置界面
    4. 在「Application」标签页:
      • Path:选择php.exe的完整路径
      • Arguments:填artisan queue:listen --tries=3
      • Working Directory:选择你的Laravel项目根目录
    5. 可以在「Log」标签页配置标准输出和错误输出的日志文件,方便后续排查问题
    6. 保存配置后,在Windows服务列表里找到LaravelQueueWorker,设置启动类型为「自动」,然后启动服务
  • 体验优势:Windows服务会随系统自动启动,进程崩溃后服务管理器会自动重启(可自定义重启策略),完全符合生产环境的稳定性要求,而且用Windows自带的服务管理器就能监控和管理,运维成本更低

其他可选方案

  • Laravel Horizon:如果你的队列用的是Redis,Horizon提供了可视化的监控和管理界面,但在Windows上运行Horizon需要额外配置(比如借助WSL),不如NSSM直接省心
  • Windows任务计划程序:不用第三方工具的话,可以创建一个开机触发的任务,执行php artisan queue:listen,但要设置「即使用户未登录也运行」和最高权限,不过这种方式的重启机制不如服务灵活,适合小型场景

总结一下:forever可以临时用或者小型场景,但生产环境优先推荐NSSM注册成Windows服务,稳定性和运维体验都更优。

内容的提问来源于stack exchange,提问作者Halil Yıldırım

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:07:37