PHP 与 Swoole 理解与学习

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

  • 优点:
  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 实现业务逻辑FaShop - 开源商城系统|博客:woann-chat 基于 laravelS 和 layim 的聊天系统
  5. 到这里,你应该就能算会用 swoole 的 phper 了

更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的PHP技术交流群953224940

进阶PHP月薪30k>>>架构师成长路线【视频、面试文档免费获取】

猜你喜欢

转载自blog.csdn.net/weixin_49163826/article/details/108294617