swoft微服务实战二:swoft启动

三、启动相关注意:

1. 启动:

①. 启动swoft:
   php bin/swoft http:start
②. 查看进程:
   ps -ef
   UID   PID  PPID  C  STIME  TTY          TIME CMD
   root  1     0    7  20:18  ?   00:00:01 swoft-http master process(/var/www/swoft//var/www/swoft/bin/swoft)
   root  14    1    0  20:18  ?   00:00:00 swoft-http manager process
   root  16    14   0  20:18  ?   00:00:00 swoft-http task process
   ...
   root  28    14   0  20:18  ?   00:00:00 swoft-http worker process
   ...
   # 1个master、10个task、6个worker
   # PPID表示父的PID

注:
①. 开发环境php bin/swoft http:start启动后,最好不要ctrl + c终止掉,防止出现僵尸进程.
   可以再开一个窗口,使用php bin/swoft http:restart来重启.
②. 生产环境可以使用docker restart swoft来重启容器.

2. Swoft-cli使用、修改代码自动重启服务:

宿主机代码改动,重启容器可以解决,但是麻烦.

①. swoft 1.x修改代码会有reload重新加载机制,内置了一个不断死循环的监听文件md5值是否发生改变.如果改变,就会改变worker进程.
②. swoft 2.x把监控文件变动并重启服务的代码专门做成一个客户端工具Swoft-cli.
   注:生产环境是不需要的,只有在开发中使用.

2.1 基本原理:

①. 死循环收集指定一堆文件的md5值(php的md5_file函数)
②. 一旦文件发生变化,md5值就会发生变化.
③. 如果变化,则发送信号给主进程ID,重启服务(整个服务,非worker进程)
④. 代码在ServerCommand的205行

2.2 安装swoftcli:

①. 进入docker容器中下载swoftcli包:
   wget https://github.com/swoft-cloud/swoft-cli/releases/download/v0.1.3/swoftcli.phar
②. 拷贝到环境变量目录中全局使用:
   mv swoftcli.phar /usr/local/bin/swoftcli
   chmod +x /usr/local/bin/swoftcli             // 给执行权限
③. 以swoftcli的方式启动并监听:
   php /swoft/bin/swoft http:stop
   swoftcli run -c http:start -b bin/swoft      // http api
   swoftcli run -c rpc:start -b bin/swoft       // http rpc
④. 查看进程:
   apk add procps         // 安装后,Alpine镜像在ps -ef可以查看更多PID、PPID等信息
   ps -ef

3. 重启报错提示正在运行:

现象:
如果程序非正常关闭,会提示Http Server have been running.

原因:
①. 程序启动后,会在runtime/swoft.pid文件中记录了主进程的PID.如果有这个文件,表示正在开启.
②. 因为多进程需要关闭或重启,需要获取主进程的PID.

解决方案:
删除这个文件:rm runtime/swoft.pid
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值