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

Laravel项目Windows环境:关闭后台PHP CLI进程与队列监听优化咨询

解决Windows环境下Laravel队列监听器持久化后台运行的方案

针对你遇到的Windows环境下Laravel队列监听器依赖命令提示符窗口、易意外终止的问题,我整理了一套通过批处理脚本+Windows任务计划程序实现后台持久运行的方案,同时能自动清理旧进程,确保队列服务稳定:

1. 编写进程管理批处理脚本

首先创建一个laravel_queue_worker.bat文件,放在你方便的路径(比如项目根目录),内容如下:

@echo off
:: 杀掉之前运行的Laravel队列监听器进程(精准匹配命令行参数,避免误杀其他PHP进程)
taskkill /F /IM php.exe /FI "COMMANDLINE eq *artisan queue:listen*" 2>NUL

:: 后台启动新的队列监听器,指定窗口名称方便后续管理
start /MIN /B "Laravel Queue Worker" php C:\Apache24\htdocs\laravel\artisan queue:listen --timeout=240

exit

脚本说明:

  • taskkill /F /IM php.exe /FI "COMMANDLINE eq *artisan queue:listen*":强制终止所有命令行包含artisan queue:listen的PHP进程,2>NUL用来忽略“找不到进程”的错误提示。
  • start /MIN /B "Laravel Queue Worker":/B表示后台运行不弹出窗口,/MIN确保即使有窗口也最小化,给进程指定名称Laravel Queue Worker方便后续排查。
  • 如果你PHP没有加入系统环境变量,需要替换php为PHP的绝对路径,比如C:\php-8.2.0\php.exe。

2. 配置Windows任务计划程序

通过任务计划让脚本在系统启动时自动运行,并且每小时执行一次(防止进程意外崩溃后无法自动恢复):

  1. 打开「任务计划程序」(可以通过开始菜单搜索)。
  2. 点击右侧「创建基本任务」,填写任务名称(比如Laravel Queue Worker 守护进程),点击下一步。
  3. 设置触发器:
    • 第一个触发器选择「当计算机启动时」,确保系统重启后自动拉起队列服务。
    • 点击「新建触发器」,添加第二个触发器:选择「按计划」,设置为「每天」,重复任务间隔选「1小时」,持续时间选「无限期」,点击确定。
  4. 设置操作:选择「启动程序」,在「程序或脚本」中选择你刚才创建的laravel_queue_worker.bat文件,点击下一步。
  5. 设置条件和设置:
    • 切换到「条件」选项卡,取消勾选「只有在计算机使用交流电源时才启动此任务」(服务器建议)。
    • 切换到「设置」选项卡,勾选「不管用户是否登录都要运行」,并勾选「使用最高权限运行」,避免权限不足导致进程无法启动或终止。
  6. 点击「完成」保存任务。

3. 测试验证

  • 手动运行批处理脚本,打开任务管理器查看:旧的PHP队列进程会被终止,新的PHP进程会启动。
  • 重启系统,检查任务计划是否自动执行,队列监听器是否正常运行。
  • 可以手动终止PHP队列进程,等待1小时后查看是否自动重启。

这样就能彻底解决命令窗口依赖的问题,确保Laravel队列监听器在Windows环境下稳定持久运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:12:28