Hyperf 3.1需启用hyperf/watcher实现热重载:先composer require hyperf/watcher --dev安装,再配置config/autoload/watcher.php中watch包含'app/'和'.env',最后执行php bin/hyperf.php watcher:watch启动守护模式监听。

Hyperf 3.1项目中修改代码后需手动重启才能生效,开发调试效率严重受阻,尤其在接口逻辑频繁迭代阶段,每次改完Ctrl+S→php bin/hyperf.php start→等待启动→curl测试,整个流程耗时超12秒,无法满足快速验证需求。
启用热重载watcher组件
执行命令安装watcher:composer require hyperf/watcher --dev
这一步必须在--dev环境下安装,否则生产环境误启用将导致不可预知的协程状态污染。
安装完成后,watcher命令会自动注册进bin/hyperf.php可执行列表。
配置热重载监听路径与规则
在config/autoload/watcher.php中设置监听范围:
确保'watch' => ['app/', 'config/']包含实际业务代码目录;若遗漏app/,修改Controller或Service将完全不触发重载。
【watcher默认不监听.env文件】,如需环境变量变更也触发重载,需手动添加'.env'到watch数组中。
可选:通过'ignore' => ['.git', 'runtime/']排除无关目录,避免inotify句柄耗尽。
启动热重载服务
方法一:使用watcher内置命令
运行php bin/hyperf.php watcher:start,终端将进入监听状态,控制台实时输出[INFO] File changed: app/Controller/IndexController.php → Reloading...
方法二:启用守护模式(推荐日常开发)
执行php bin/hyperf.php watcher:watch,该命令会在后台持续运行,并自动捕获文件变化、平滑重启Worker进程。
注意:此模式下若PHP语法错误导致启动失败,watcher会卡在报错状态且不再响应后续修改,需手动Ctrl+C终止后重试。
验证.env热重载是否生效
第一步:确认watcher配置已加入.env监听项
第二步:修改.env中任意值,例如将APP_DEBUG=true改为APP_DEBUG=false
第三步:观察watcher终端输出是否出现Reloading due to .env change字样
第四步:发起一次HTTP请求,检查响应头中X-Debug-Mode是否已同步更新为false
若第三步无输出,说明.env未被纳入监听——Hyperf 3.1的watcher默认不处理环境文件,必须显式声明。


















