PHP开发者的福音,解读PHP异步通信框架Swoole的机制
在中国互联网行业膨胀的12-16年,PHP语言凭借自身易上手,开发周期短的优势,深受各中小企业的喜爱。小编也很荣幸在2009年底进入这一行业,为自己谋生分得一杯羹。但是PHP又先天有它的局限性,导致客户很多需求无法得到满足。
大家都知道,PHP现有的应用方式都是基于http的,对于需要快速实时响应的场景比较乏力,比如网络游戏又或者聊天工具之类的推送服务,一般都需要与用户长期保持一个TCP连接以便于实时响应和推送信息。在Swoole出现以前,这个问题一直是PHPER难以逾越的难题,甚至很多PHP开发者都纷纷转行投向java,Python的怀抱。让我这个仍然坚持PHP阵营的小伙伴甚是孤独。
接下来,我们来说说Swoole,看看它给PHPER带来怎样的解决方案。
Swoole是一个面向生产环境的PHP异步网络通信引擎,使PHP开发人员编写高性能的异步并发TCP、UDP、UnixSocket、Http、WebSocket服务。Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域,使用PHP Swoole作为网络通信框架。
Swoole虽然是标准的PHP扩展,但它与普通扩展有着本质上的区别,普通扩展只是提供一个函数库,而Swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后底层会自动回调指定的PHP函数。
Server
强大的TCP/UPD 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隧道加密,支持SLL双向证书,支持同步并发调用,支持异步事件驱动编程。
Coroutine
Swoole在2.0开始内置协议(Coroutine)的能力,提供了具备协程能力IO接口。
协程能力可以理解为纯用户态的线程,其通过协作而不是抢占来切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。Swoole可以为每一个请求创建对应协程,根据IO的状态来合理调度协程。
Process
进程管理模块,可以方便地创建子进程,进程间通信,进程管理
Table
基于共享内存和自旋锁实现的超高性能内存表。彻底解决线程、进程间数据共享,加锁同步等问题。
Event
EventLoop API,让用户可以直接操作底层的时间循环,将Socket,Stream,管道等Linux文件加入到事件循环中。
支持的版本:PHP 5.3
支持的数据库:MySQL、DB2、Oracle、MS SQL SERVER、ODBC等主流数据库
支持的运行方式:Web、Cli命令脚本、PHP-GTK GUI
那么作为PHP程序员的你,是否还会继续坚守自己的阵营呢?