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

Windows系统下运行Laravel的php artisan queue:work的更优方案有哪些?

Windows 环境下运行 Laravel queue:work 的更优方案

你当前使用的开机启动批处理方案可以满足基础运行需求,但存在进程异常退出后无法自动重启、无日志留存排查困难、前台运行占用命令行窗口等不足,以下是两种更优的实现方式:


方案1:优化现有批处理(适合开发/测试环境)

不需要额外安装工具,仅修改现有脚本即可提升稳定性:

  • 给队列命令添加运行参数,避免异常场景导致的资源占用:
    命令示例:php artisan queue:work --tries=3 --timeout=60 --sleep=3
    参数说明:--tries 限制单任务最大重试次数避免死循环,--timeout 限制单任务最长执行时间,--sleep 定义空队列时的休眠间隔降低CPU占用
  • 给批处理添加异常自动重启逻辑,修改批处理内容如下:
    @echo off
    :: 替换为你的Laravel项目根目录绝对路径
    cd /d "D:\www\your-laravel-project"
    :loop
    php artisan queue:work --tries=3 --timeout=60 --sleep=3
    echo 队列进程意外退出,10秒后自动重启...
    timeout /t 10 /nobreak > nul
    goto loop
    
  • 如果需要后台隐藏运行不弹出黑框,可额外编写VBS脚本调用批处理,将VBS文件放入开机启动项即可,VBS脚本内容如下:
    Set WshShell = CreateObject("WScript.Shell") 
    :: 替换为你的批处理文件绝对路径
    WshShell.Run chr(34) & "D:\scripts\start-queue.bat" & Chr(34), 0
    Set WshShell = Nothing
    

方案2:封装为Windows系统服务(生产环境首选)

借助工具NSSM(Non-Sucking Service Manager)将队列进程封装为系统服务,稳定性远高于开机启动项,支持系统登录前自动启动、异常自动重启、统一在服务管理器管理状态等能力:

  1. 下载NSSM后放入任意可访问的本地目录
  2. 以管理员身份启动命令提示符,执行 nssm install LaravelQueueService 调出服务配置窗口
  3. 在Application标签页填写配置:
    • Path:选择WAMP集成环境中php.exe的绝对路径,示例:C:\wamp64\bin\php\php8.2.0\php.exe
    • Arguments:填写队列运行命令,示例:artisan queue:work --tries=3 --timeout=60 --sleep=3
    • Working directory:填写Laravel项目根目录的绝对路径
  4. 切换到Recovery标签,将三次失败响应都设置为「重启服务」,重启延迟设置为10000毫秒
  5. 保存配置后,在Windows服务管理器中找到LaravelQueueService,设置启动类型为自动,启动服务即可

注意:无论使用哪种运行方案,每次修改队列相关代码、更新.env配置后,都需要执行php artisan queue:restart 重启队列进程,新的配置和代码才会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:42:02