入门指引
Swoole
虽然是标准的PHP
扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而Swoole
扩展在运行后会接管PHP
的控制权,进入事件循环。当IO
事件发生后底层会自动回调指定的PHP
函数。
Swoole
要求使用者必须具备一定的Linux/Unix
环境编程基础,《学习Swoole需要掌握哪些基础知识》 本文列出了基础知识清单。
Server
强大的TCP/UDP Server
框架,支持多线程,EventLoop
,事件驱动,异步,Worker
进程组,Task
异步任务,毫秒定时器,SSL/TLS
隧道加密。
Http\Server
是Server
的子类,内置了Http
的支持WebSocket\Server
是Http\Server
的子类,内置了WebSocket
的支持Redis\Server
是Server
的子类,内置了Redis
服务器端协议的支持
子类可以调用父类的所有方法和属性
Client
TCP/UDP/UnixSocket
客户端,支持IPv4/IPv6
,支持SSL/TLS
隧道加密,支持SSL
双向证书,支持同步并发调用,支持异步事件驱动编程。
Coroutine
Swoole
在2.0
开始内置协程(Coroutine
)的能力,提供了具备协程能力IO
接口(统一在命名空间Swoole\Coroutine\*
)。
协程可以理解为纯用户态的线程,其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。Swoole
可以为每一个请求创建对应的协程,根据IO
的状态来合理的调度协程,这会带来了以下优势:
开发者可以无感知的用同步的代码编写方式达到异步IO的效果和性能,避免了传统异步回调所带来的离散的代码逻辑和陷入多层回调中导致代码无法维护。
Process
进程管理模块,可以方便的创建子进程,进程间通信,进程管理。
Table
基于共享内存和自旋锁实现的超高性能内存表。彻底解决线程,进程间数据共享,加锁同步等问题。
Table
的性能可以达到单线程每秒读写200W
次
Event
EventLoop API
,让用户可以直接操作底层的事件循环,将socket
,stream
,管道等Linux
文件加入到事件循环中。
eventloop
接口仅可用于socket
类型的文件描述符,不能用于磁盘文件读写