PHP 与 Swoole 浅析与学习
php
我们用的PHP主要用于web开发,通过nginx、apache等服务端程序调用php-fpm处理服务端的业务逻辑,处理完后php撤消内存并后回结果,由此可见,一个http就要加载一次php的全部文件,这也是目前php-fpm的缺点之一,并且php-fpm不合适service端的开发。
下面是我随便在网上找的php-fpm运行流程,各位参考理解一下
http://www.test.cc
|
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
这个swoole官方的介绍
SWOOLE是PHP的协程高性能网络通信引擎,使用C/C++
语言编写,提供了多种通信协议的网络服务器和客户端模块
,使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升。^ [1]^
swoole相对于php-fpm优点:
- 能搭建TCP/UDP/UnixSocket服务器
- 原生支持毫秒定时器
- 异步/同步TCP/UDP网络客户端、异步MySQL、异步Redis
- 高性能的协程提高异步IO的效果和性能
- 常驻的cli运行模式,不用每次请求加载一次项目代码
swoole相对于php-fpm缺点:
- 不支持xdebug,不支持手动dump
- 相关文档较少
- 入门难度高,多数PHPER不了解TCP/IP网络协议、多进程/多线程、异步io等
详细的swoole介绍可以到easyswoole文档中查看easyswoole文档
怎么学习swoole
- 先通略看一看swoole的官方文档
- 看一下并实现慕课网singwa老师的两个swoole教程
- esayswoole的官方入门视频easyswoole入门视频
- 看一下开源swoole项目,研究别人怎么用swoole实现业务逻辑 https://www.fashop.cn/ | 博客:woann-chat 基于 laravelS 和 layim 的聊天系统
- 到这里,你应该就能算会用swoole的phper了
本人实际项目
Laravel 项目深度优化过程
jin-chat 基于 EasySwoole 和 layim 的聊天系统
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: