首发于Mix PHP

SwooleFor 增加 --no-inotify 文件扫描捕获代码更新

SwooleFor

是一个监控你的 Swoole 程序文件变化并自动重启服务器的命令行程序 - 适用于开发

SwooleFor 上线后,用户反馈了一些问题:

  • inotify 无法捕获代码变更:原因是大部分用户是通过虚拟机或容器挂载宿主目录,而开发是直接在宿主机修改代码,虚拟机或容器内文件是会变更的,但是 inotify 确无法捕获到这个更新,所以该种情况无法热更新,而使用 git webhook / ftp 这种在虚拟机或容器内部修改文件的就可捕获到。
  • Debian 系列 OS 无法正常重启:原因是 php 在 debian 系列,执行外部命令的时候和 redhat 系列不一样,debian 会多一步,会先 sh -c cmd,生成另一个子进程,而 proc_get_status 获取到的是 sh -c cmd 这个中转进程的id,导致进程获取错误。

针对上面问题的修复:

  • 增加 --no-inotify 文件扫描捕获代码更新,当 inotify 无法正常使用的环境时,可切换为文件扫描的方式捕获代码变更。
  • 通过使用 exec 执行 ps --ppid %s 判断是否有中转进程 id 的情况,获取真实的进程 id。

下载最新版本:

编辑于 2019-10-15

文章被以下专栏收录