什么是 Swoole
Swoole 是一个使用纯 C 语言编写的(Swoole 4 开始逐渐改为通过 C++ 编写),基于异步事件驱动和协程的并行网络通信引擎,为PHP提供高性能网络编程支持。
Swoole 的特点
Swoole 是运行在PHP下的一个extesion扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而 Swoole 扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。
Swoole 底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与Nginx/Tornado/Node.js 等全异步的框架不同,Swoole既支持全异步,也支持同步。
Swoole 是开源免费的自由软件,授权协议是Apache2.0。企业和个人开发者均可免费使用Swoole的代码,并且在Swoole之上所作的修改可用于商业产品,无需开源(注:必须保留原作者的版权声明)。
Swoole 使用纯C/C++编写,不依赖其他第三方库。
- swoole并没有用libevent,所以不需要安装libevent
- swoole并不依赖php的stream/sockets/pcntl/posix/sysvmsg等扩展
为什么要用 Swoole?
PHP这门语言从诞生到现在差不多20年了,一直是作为Web领域快速开发的首选语言之一,日常场景就是,从数据库取出数据,经过一定的算法逻辑运算,对模板进行渲染并直接输出到Web浏览器。或者作为服务端的接口给网站、公众号、小程序、APP提供接口,然后由前端的VUE等展示。
但是在某些场景还是有局限性,比如即时通讯类需要维持长链接的项目、直播类项目、游戏类项目等,使用传统的PHP不借助其它外力根本无法开发诸如此类的项目。
还有之前 PHP 一直被诟病的一个原因就是它是同步阻塞式语言,这在 Web 应用这种 IO 密集型的领域对于编写高并发高性能的应用而言,是一个重大阻碍。
而有了 Swoole 之后,PHP 开发人员可以轻松编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP 以及 WebSocket 服务,从而使得 PHP 语言在异步 IO 和网络通信领域开疆拓土,让 PHP 不再局限于 Web 领域,并且有望在工业级技术方面与 Node.js 和 Go 语言展开角逐。从某种角度上说,Swoole 让 PHP 插上了异步的翅膀,让它飞得更高。
Swoole 的应用场景
Swoole 比较适合用于服务器端开发,支持类似Go语言的协程,可以使用完全同步的代码实现自动协程调度。
而 Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。
Swoole 可以广泛应用于互联网、实时通讯、云计算、 网络游戏、物联网(IOT)、车联网、智能家居、微服务、数据库连接池等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。
|