php
我们用的 PHP 主要用于 web 开发,通过 nginx、apache 等服务端程序调用 php-fpm 处理服务端的业务逻辑,处理完后 php 撤消内存并后回结果,由此可见,一个 http 就要加载一次 php 的全部文件,这也是目前 php-fpm 的缺点之一,并且 php-fpm 不合适 service 端的开发。
下面是我随便在网上找的 php-fpm 运行流程,各位参考理解一下
Test.cc is for sale
|
Nginx
|
路由到http://www.test.cc/index.php
|
加载nginx的fast-cgi模块
|
fast-cgi监听127.0.0.1:9000地址
|
www.test.com/index.php请求到达127.0.0.1:9000
|
php-fpm 监听127.0.0.1:9000
|
php-fpm 接收到请求,启用worker进程处理请求
|
php-fpm 处理完请求并撤消内存,返回给nginx
|
nginx将结果通过http返回给浏览器
总结一下我理解 php-fpm 的优缺点
- 优点:
- 部署简单
- 调试方便
- 基于传统 php 的项目非常多,易于参考
- 缺点:
- 每次 http 请求都要加载全部的项目文件
- php-fpm 性能不佳,并发性能不好
- 核心异步网络不支持
swoole
这个 sw