PHP开发者的福音,解读PHP异步通信框架Swoole的机制

2022-10-11 20:52:41 117 0
魁首哥

在中国互联网行业膨胀的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程序员的你,是否还会继续坚守自己的阵营呢?

欢迎评论区留言,有讲得不好或者不对的地方也欢迎大家补充。

收藏
分享
海报
0 条评论
117
上一篇:有哪些和陈情令一样好看的BL小说(陈情令同题材的小说推荐) 下一篇:PHP操作时间戳,以及如何拿到各种时间

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码