服务管理脚本

执行完框架安装后,可以在你的项目根目录下,看多一个easyswoole的文件。
执行以下命令:

  1. php easyswoole

可见:

  1. ______ _____ _
  2. | ____| / ____| | |
  3. | |__ __ _ ___ _ _ | (___ __ __ ___ ___ | | ___
  4. | __| / _` | / __| | | | | \___ \ \ \ /\ / / / _ \ / _ \ | | / _ \
  5. | |____ | (_| | \__ \ | |_| | ____) | \ V V / | (_) | | (_) | | | | __/
  6. |______| \__,_| |___/ \__, | |_____/ \_/\_/ \___/ \___/ |_| \___|
  7. __/ |
  8. |___/
  9. 欢迎使用为API而生的 easySwoole 框架 当前版本: 2.x
  10. 使用:
  11. easyswoole [操作] [选项]
  12. 操作:
  13. install 安装easySwoole
  14. start 启动easySwoole
  15. stop 停止easySwoole
  16. reload 重启easySwoole
  17. help 查看命令的帮助信息
  18. 有关某个操作的详细信息 请使用 help 命令查看
  19. 如查看 start 操作的详细信息 请输入 easyswoole help --start

服务启动

开发模式:

  1. php easyswoole start

生产环境(守护模式)

  1. php easyswoole start --d

注意是两个 -

服务停止

  1. php easyswoole stop

注意,守护模式下才需要stop,不然control+c或者是终端断开就退出进程了

服务热重启

  1. php easyswoole reload

注意,守护模式下才需要reload,不然control+c或者是终端断开就退出进程了,此处为热重启,可以用于更新worker start后才加载的文件(业务逻辑),主进程(如配置文件)不会被重启。

服务重新启动

  1. php easyswoole restart

此处逻辑为,先stop,再启动服务。

热加载

热加载在开发阶段是非常有必要使用的,否则调试代码需要不停的重启服务,下面的脚本可以让我们只专注与开发,而不用去重启服务。

mac OS

MacOS 下使用 fswatch 命令监听文件变更,然后重启服务器,需要先安装命令行工具 brew install fswatch

在程序根目录下创建文件start.shchmod +x start.sh

然后复制如下shell脚本保存到 start.sh 文件夹

  1. #!/bin/bash
  2. DIR=$1
  3. if [ ! -n "$DIR" ] ;then
  4. echo "you have not choice Application directory !"
  5. exit
  6. fi
  7. php easyswoole stop
  8. php easyswoole start --d
  9. fswatch $DIR | while read file
  10. do
  11. echo "${file} was modify" >> ./Temp/reload.log 2>&1
  12. php easyswoole reload
  13. done

使用方法: ./start.sh ./Application

如果直接执行 ./start.sh 会提示 you have not choice Application directory,因为我们需要指定监听路径,通常是Application 目录

所以执行命令 ./start.sh ./Application 监听的路径为相对路径或绝对路径,相对路径注意使用 ./ 开头,否则会监听成 Mac OS/Application 目录。

启动后脚本会自动启动 easyswoole 并进入守护模式,但注意进程还是会hang住,因为 fswatch 会不断监听文件变更,如果 Ctrl+c 关闭进程则仅关闭了文件监听,easyswoole 会依然再后台运行。此时可以手动停止服务或者再次运行热加载脚本。

如果需要将热加载脚本也放入后台则使用命令 nohup ./start.sh ./Application & 即可(注意最后有个and符号)。

Linux

Linux和Mac Os 可以使用相同脚本,不过需要额外安装fswatch。

安装fswatch

wget https://github.com/emcrisostomo/fswatch/releases/download/1.11.2/fswatch-1.11.2.tar.gz
tar -xvzf fswatch-1.11.2.tar.gz
cd fswatch-1.11.2
sudo ./configure
sudo make
sudo make install
sudo ldconfig

确保动态库的安装目录($PREFIX/lib)包含在您的操作系统的动态链接器的查找路径中。默认路径/usr/local/lib.
刷新链接和缓存到动态库是必需的。在GNU/Linux系统中,您可能需要运行 $ ldconfig

脚本和上面的Mac OS的相同

**如果你运行脚本提示

PID file does not exist, please check whether to run in the daemon mode!
不必担心, 这个是脚本会先执行php easyswoole stop的缘故(因为你并没有启动easyswoole)**