mix-php / swoolefor

监控你的 Swoole 程序文件变化并自动重启服务器 - 适用于开发 / Monitor for any changes in your swoole application and automatically restart the server - perfect for development
https://openmix.org/mix-php
Apache License 2.0
93 stars 13 forks source link

所有人:出错的请看这里 #9

Open onanying opened 5 years ago

onanying commented 5 years ago

当你要使用 swoolefor 执行一个命令时,如:php swoolefor.phar --exec "php /data/bin/hyperf.php start",先执行一下 --exec 内的命令,如:php /data/bin/hyperf.php start,看有没有错误,是不是前台执行,还有前面的 php 必须要有, /data/bin/hyperf.php 必须是绝对路径。

onanying commented 5 years ago

sub process exit too fast, sleep 2 seconds:

Swoole 从 4.4.0 开始接受我的提议支持 hook proc_open 方法,但后面到 4.4.3 / 4.4.4 修改 wait 时出了问题,导致bug,4.4.5 已经修复该问题,凡是出现不停 sub process exit too fast, sleep 2 seconds 请升级 Swoole 到 >= 4.4.5,然后下载 swoolofor 的最新版本:https://github.com/mix-php/swoolefor/releases/latest

onanying commented 5 years ago

可以正常启动,但是不会触发重启:

如果用 vim 修改 docker容器内部或者虚拟机内部 本地文件能捕获到文件更新并重启命令,而在宿主机用 IDE 修改不能重启:inotify 监控不了映射的共享文件夹,需要使用 git hook / ftp 等工具在容器内部本地修改代码

SwooleFor v1.1.3 已经支持文件扫描的方式捕获代码更新:

下载 swoolofor 的最新版本:https://github.com/mix-php/swoolefor/releases/latest

php swoolefor.phar --exec="php app.php arg..." --no-inotify

php 在 debian 系列,执行外部命令的时候和 redhat 系列不一样,debian 会多一步,会先 sh -c cmd,生成另一个子进程,而 proc_get_status 获取到的是 sh -c cmd 这个中转进程的id,导致进程获取错误。

我已经在 SwooleFor v1.1.4 增加代码修复这个问题,下载 v1.1.4 https://github.com/mix-php/swoolefor/releases/latest