[toc]
>[info] 用于替代PHP-FPM同步阻塞的模式。实现异步非阻塞高性能的web服务
## 优势
* 性能的数十倍的提升;
* 可以在`Apache`/`Nginx`等传统WEB服务器和`Swoole`之间切换部署;
* **在此模式下,还可以直接在控制器中调用`swoole/server`的方法,比如定时,任务异步投递,协程等等**
> 本例使用的是thinkphp5.1的扩展包, 本文只做实操记录与源码分析,详细内容查看 [ThinkPHP 5.1 Swoole 快速上手指南](https://www.kancloud.cn/thinkphp/think-swoole/722895)。
~~~
composer require topthink/think-swoole
# 启动
php think swoole
~~~
## 理解性能提升
原生的php-fpm是同步阻塞模式的,PHP-FPM 会创建一个主进程,控制何时以及如何将HTTP请求转发给一个或多个子进程处理。PHP-FPM主进程还控制着什么时候创建(处理Web应用更多的流量)和销毁(子进程运行时间太久或不再需要了)。
而swoole-httpserver是异步非阻塞模式的。它常驻于内存,并基于事件回调。
**我们先通过ab压测分别压测不同模式下的同一PHP程序** `这里压的是开了debug的thinkphp5.1默认页面`
~~~
// -n 2000表示总请求数为2000
// -c 100 表示并发用户数为100
// -k 使用HTTP的KeepAlive特性
ab -c 100 -n 2000 -k http://127.0.0.1:9501/
~~~
关于ab压测工具的安装与使用:[https://cloud.tencent.com/developer/article/1333772](https://cloud.tencent.com/developer/article/1333772)
**在php-fpm模式下**
![](https://i.loli.net/2019/04/12/5cb055468f405.png)
**在swoole-httpserver模式下**
!