一.安装swoole及入门

1.安装准备

安装前必须保证系统已经安装了下列软件

  • php-7.0 或更高版本
  • gcc-4.8 或更高版本
  • make
  • autoconf
  • pcre (CentOS系统可以执行命令:yum install pcre-devel)
  • phpize (CentOS系统可以执行命令:yum install php-devel)

2.下载地址

3.安装

1).完整编译

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
自行创建/data/tools目录
cd /data/tools && \
curl -o swoole.tar.gz https://codeload.github.com/swoole/swoole-src/tar.gz/v4.4.3 -L && \
tar zxvf swoole.tar.gz && \
mv swoole-src-* swoole-src && \
cd swoole-src && \
/data/webserver/php/bin/phpize && \
./configure \
--with-php-config=/data/webserver/php/bin/php-config \
--enable-openssl  \
--enable-http2  \
--enable-sockets \
--enable-mysqlnd && \
make clean && make && sudo make install

2).PECL

1
pecl install swoole

4.配置php.ini

编译安装成功后,修改php.ini加入

1
2
vim /data/webserver/php/etc/php.ini
extension=swoole.so

通过php -m或phpinfo()来查看是否成功加载了swoole.so,如果没有可能是php.ini的路径不对,可以使用php –ini来定位到php.ini的绝对路径。

5.重启php-fpm

1
/etc/init.d/php-fpm restart

二.swoole入门

1.体验swoole代码

通过体验基础代码,了解swoole的基本运行,有更直观的感受,以下git包含示例运行代码:

https://gitee.com/Kindred_Dy/swoole_php.git

2.swoole运行流程和进程/线程结构图

1).运行流程图

img

2).进程/线程结构图

A.Swoole是一个多进程模式的框架(可以类比Nginx的进程模型)

  • 当启动一个Swoole应用时,一共会创建2 + n + m个进程,其中n为Worker进程数,m为TaskWorker进程数,2为一个Master进程和一个Manager进程
  • Master进程为主进程,该进程会创建Manager进程、Reactor线程等工作进/线程
  • Reactor线程实际运行epoll实例,用于accept客户端连接以及接收客户端数据
  • Manager进程为管理进程,该进程的作用是创建、管理所有的Worker进程和TaskWorker进程

img

img

B.Worker进程

1.简介

Worker进程作为Swoole的工作进程,所有的业务逻辑代码均在此进程上运行。当Reactor线程接收到来自客户端的数据后,会将数据打包通过管道发送给某个Worker进程

2.Worker进程生命周期

当一个Worker进程被成功创建后,会调用onWorkerStart回调,随后进入事件循环等待数据。当通过回调函数接收到数据后,开始处理数据。如果处理数据过程中出现严重错误导致进程退出,或者Worker进程处理的总请求数达到指定上限,则Worker进程调用onWorkerStop回调并结束进程。