欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

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

2022-10-20 22:35:55 6066

摘要: 在中国互联网行业膨胀的12-16年,PHP语言凭借自身易上手,开发周期短的优势,深受各中小企业的喜爱。小编也很荣幸在2009年底进入这一行业,为自己谋生分得一杯羹。但是PHP又先天有它的局限性,导致客户很多需求无法得到满足。大家都知道,P...

在中国互联网行业膨胀的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隧道加密。

HTTPServer是Server的子类,内置了Http的支持;

WebSocketServer是HTTPServer的子类,内置了WebSocket的支持;

RedisServer是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程序员的你,是否还会继续坚守自己的阵营呢?

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

版权声明:本站所有文章皆是来自互联网,如内容侵权可以联系我们( 微信:bisheco )删除!
友情链接
币圈社群欧易官网