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 的优缺点

优点:

  1. 部署简单
  2. 调试方便
  3. 基于传统 php 的项目非常多,易于参考

缺点:

  1. 每次 http 请求都要加载全部的项目文件
  2. php-fpm 性能不佳,并发性能不好
  3. 核心异步网络不支持
 

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

    1. 先通略看一看 swoole 的官方文档
    2. 看一下并实现慕课网 singwa 老师的两个 swoole 教程
    3. esayswoole 的官方入门视频 easyswoole 入门视频
    4. 看一下开源 swoole 项目,研究别人怎么用 swoole 实现业务逻辑 https://www.fashop.cn/ | 博客:woann-chat 基于 laravelS 和 layim 的聊天系统
    5. 到这里,你应该就能算会用 swoole 的 phper 了
原文地址:https://www.cnblogs.com/weixinsb/p/13292391.html