开发辅助工具
Swoole 4.X速查表:https://toxmc.github.io/swoole-cs.github.io/
ide提示工具:https://github.com/swoole/ide-helper
这2个工具挺实用的,截图如下:
Swoole内置功能
Swoole 是使用 C 和 C++ 语言编写的php扩展, 内置了异步非阻塞、多线程的网络IO服务器,PHP程序员仅需处理事件回调即可,无需关心底层。
与大家熟知的 Workerman 框架不同,Swoole更像是一个基础库给了开发者一把无比锋利的宝剑,可以按照自己想要的方法去使用。
Swoole绝大部分功能都只能运行在 CLI 模式下,也正因为此开发者可以完全的掌控Server的一切,与传统的 php-fpm 模式不同,Swoole需要开发者自行接管各种相关事件,和管理变量的生命周期等。
与传统Web开发的区别
我们知道 php-fpm 是 fast-cgi 运行模式的进程管理器,当启动Server时 php-fpm 会预创建若干个 fast-cgi 处理进程;
每当请求到达 nginx 时 Nginx 检查到请求的是.php文件时,就将请求转发给 php-fpm Server 然后由 php-fpm 交给某个空闲的进程处理,当处理完成后由 php-fpm 返回给 Nginx 然后由 Nginx 响应给用户。
传统PHP开发者几乎无需关注这其中发生的过程甚至根本不了解,正所谓成也萧何败萧何,一方面虽然降低了开发者入门的门槛但另一方面也使得大量的PHP开发者几乎不了解也不懂的真正的服务端开发。
而 SwooleServer 则是相当于取代了 php-fpm 作为管理器的位置, 由于Swoole 是运行在 CLI 模式下, 所以可以常驻运行和以守护进程运行, 但也正因为如此,也需要开发者自行处理变量的销毁及各种异常和超时的处理。
Swoole 做了什么
Swoole 是 php 的一个扩展,但是他又不是普通的扩展,其最明显的特点就是:一但运行后就会接管PHP的控制权,进入事件循环。 当某种IO事件发生时, Swoole 会回调开发者设置的指定PHP函数。
也就是说 SwooleServer 更像是一个用 C 语言封装好的一个 Tcp/Udp 支持 多线程, EventLoop,事件驱动,异步 等功能的框架。开发者不需要关心底层的各种实现,直接的在业务层面进行开发即可。
什么是IO事件
很多 php 程序员没有使用过其他语言开发Server,也不太了解除了php-fpm以外运行模式的php程序,初次使用Swoole时总是会有各种摸不到头脑的事情。其实IO我们经常提起如: 磁盘IO ,网络IO 在这里Swoole所指的IO事件实际上是指 网络IO 事件。
在日常生活中你留下了一个邮箱,当有人给你发送邮件的时候,你就会收到邮件提醒;
而对于你而言,你并不关心邮件是如何送达的,你只关心你有没有收到邮件,当你收到邮件之后会根据邮件的内容和发送人去做各种各样的处理。
在这个比喻中,Swoole就承担了底层网络事件的监听及各种底层事件处理,当收到邮件(请求)时,会触发收件(接收)提醒,然后将控制权转交给你(预先注册的事件回调函数),来进行后续的处理。
Swoole 的运行流程