当前位置:  首页>> 技术小册>> Swoole高性能框架-SwooleWorker

使用composer方式安装:

  1. composer create-project xielei/project

下载代码安装:
代码库地址:
https://github.com/xielei/project

目录结构:

  1. project
  2. |-- LICENSE
  3. |-- README.md
  4. |-- app
  5. | |-- gateway
  6. | |-- register
  7. | `-- worker
  8. |-- composer.json
  9. |-- composer.lock
  10. `-- vendor
  11. |-- autoload.php
  12. |-- composer
  13. `-- xielei

根据自己的开发环境分别修改app目录下的gateway/register/worker各个目录下的start.php文件中的端口。

根据上面的架构图,Gateway的进程监听的端口为对外端口,register注册中心使用的是内部端口

所以我们只需要更改Gateway的端口即可。

因为我的docker环境开放的端口为9090-9095:

  1. u2@u2:~/swoole/4.8/www/project/app$ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
  3. NAMES
  4. d57ffcb0bbc2 phpswoole/swoole:4.8-php7.3 "/entrypoint.sh" 3 hours ago Up 2 hours 0.0.0.0:9090-9095->9090-9095/tcp, :::9090-9095->9090-9095/tcp swoole48

因此,tcp端口我这里改为9090:
project\app\gateway\start.php:

  1. // 监听一个裸TCP端口
  2. $gateway->listen('0.0.0.0', 9090);

$gateway->listen('0.0.0.0', 9090);解释:

  • 如果是在docker环境下,相当于server单独运行在一台服务器,需要从宿主机访问,因此,这里的ip由127.0.0.1改为0.0.0.0

  • 如果非docker环境,原理相同,需要确认你是从哪里访问(127.0.0.1或所有ip都可以访问0.0.0.0),确认端口是否可访问,如果不能访问,需要确认是否防火墙未打开指定端口

启动服务器:
为了方便服务器的启动停止 ,编写一个简单的shell脚本来管理:
project\app\server.sh

  1. #!/bin/bash
  2. if [ "$1" != 'start' ] && [ "$1" != 'stop' ];
  3. then
  4. echo "Please use start/stop param"
  5. exit 1
  6. fi
  7. if [ "$1" = 'start' ];
  8. then
  9. php register/start.php start -d
  10. php worker/start.php start -d
  11. php gateway/start.php start -d
  12. elif [ "$1" = 'stop' ];
  13. then
  14. php register/start.php stop
  15. php worker/start.php stop
  16. php gateway/start.php stop
  17. fi

启动:

  1. root@d57ffcb0bbc2:/var/www/project/app# ./server.sh start
  2. the service is running with daemonize
  3. the service is running with daemonize
  4. the service is running with daemonize

如果启动服务器后,看到the service is running with daemonize提示,代表启动成功。
上面三条输出分别代表的是Gateway、Worker、Register三个服务进程。

通过ps命令查看启动的服务进程:

测试:

  1. u2@u2:~/swoole/4.8/www/project/app$ telnet 127.0.0.1 9090
  2. Trying 127.0.0.1...
  3. Connected to 127.0.0.1.
  4. Escape character is '^]'.
  5. 7f000001239400000002 connect~
  6. hello
  7. 7f000001239400000002 say hello
  8. 你好
  9. 7f000001239400000002 say 你好

发送hello,你好两条消息,收到服务器响应。