php多线程(php和java哪个好)
php多线程(php和java哪个好)微博Qzone微信PHP实现reactor单线程网络模型
原创流浪剑客262021-05-08 23:12:24在各种网络模型的文章中,我们常常能看到 reactor 网络模型。
它常常出现在很多软件与外部交互的网络部分,如:
redis使用reactor单线程网络IO模型。
kafka使用reactor多线程网络IO模型。
为什么需要使用网络IO模型
关于为什么要使用网络IO模型:大家需要理解一下用户态、内核态、阻塞、非阻塞、同步、异步、IO多路复用等知识。
简单来讲
在这里简单地讲,就是用户态程序没法直接操作网络IO设备,它需要发起系统调用,将控制权交给操作系统内核,内核将数据从网卡中读取数据,返回给用户态程序。在这个过程中用户态程序是等待还是不等待,内核处理的结果是怎样通知给用户程序,这就是网络IO模型可以作优化的地方。
根本原因
说到底就是优化CPU的执行时间片,不能让CPU闲着。
很重要
补充一点网络数据的 copy 操作不是CPU执行的,CPU只是初始化这个传输动作,具体数据的 copy 是由 DMA 设备来完成的。
PHP实现Reactor单线程网络模型
reactor单线程网络模型,使用到了IO多路复用的epoll模型,事件机制。操作系统需要安装libevent扩展,php需要安装event、sockets扩展。
测试例子<?php$addr="0.0.0.0"; $port=8888;//创建服务端socket$listenFd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);//绑定$bindRe=socket_bind($listenFd,$addr,$port);if(!$bindRe){die("socketbinderror"); }//监听$listenRe=socket_listen($listenFd,100);if(!$listenRe){die("socketlistenerror"); }global$eventArr,$eventBase;//实例化基础事件句柄,相当与epoll_create操作$eventBase=newEventBase();//绑定监听句柄,到基础事件句柄,相当于epoll_ctl操作$event=newEvent($eventBase,$listenFd,Event::PERSIST|Event::READ,"ep_accept"); $event->add();//等待句柄就绪,相当于epoll_wait操作$eventBase->loop();functionep_accept($listener){global$eventBase,$eventArr;if(($client=socket_accept($listener))!==false){ $tmp="连接成功\n"; socket_write($client,$tmp,strlen($tmp));//绑定端socket,到基础事件句柄,相当于epoll_ctl操作 $clientEvent=newEvent($eventBase,$client,Event::PERSIST|Event::READ,"ep_read",$client); $clientEvent->add();//event实例一定要存放在一个全局数组里面。如果去掉该行,客户端强制断开再连接,服务端无法正常收到消息 //这里这一步我也不知道原因,注视掉确实会导致客户端断开 //希望能看到这里的大佬,评论区告知在下原因。 //欢迎交流 $eventArr[intval($client)]=$clientEvent; } }functionep_read($fd){ $buffer=socket_read($fd,250); $msg="你说:{$buffer}"; socket_write($fd,$msg,strlen($msg)); }
启动服务
php ceshi.php
结果截图
reactor单线程网络模型
我实现的功能是客户端发什么消息,服务端将消息重新返回给客户端。
这里我开了两个客户端作测试。符合实验的预期。
我个人觉得学习是个人的事,我的文章侧重于抛出一些观点,然后用简单的例子去论证,从而引发大家的兴趣,文章之中很多都是我参考了很多资料之后最简要的说明。大家应该关注文章之中引发个人困惑的东西,然后去思考学习。
微信接龙怎么操作(手机微信接龙怎么操作)微信接龙怎么操作(手机微信接龙怎么操作)微信接龙怎么往下接?相信很多小伙伴都发现了微信群聊接龙功能,但不知道怎么玩,小编整理了微信群聊接龙怎么接的方法步骤供大家参考微信接龙怎么操作
微信接龙怎么操作(群里接龙123怎么接)微信接龙怎么操作(群里接龙123怎么接)202107140036接龙小管家打卡接龙!三分钟为你的微信群创建打卡活动接龙管家已认证的官方帐号接龙管家的打卡接龙真的太好用啦,还有不知道
青蛙跳出井口会看到什么会说些什么(井底之蛙跳出井后的故事)青蛙跳出井口会看到什么会说些什么(井底之蛙跳出井后的故事)二年级的语文期中考试结束后,已经开始进行新课的学习。第五单元的第12课坐井观天,是孩子们都非常熟悉的寓言故事,通过青蛙和小
新八仙过海(八仙过海连续剧85版)新八仙过海(八仙过海连续剧85版)原创202107232145上观新闻老剧院迎来新观众,7月31日8月1日,上海天蟾逸夫舞台将面向青少年学生推出国粹解锁计划2021天蟾暑期学生专场
八仙桌子(八仙桌椅)八仙桌子(八仙桌椅)八仙桌是可溯最远传之最久的中国传统家具之一,宋人晁补之八仙案铭有东皋松菊堂,饮中八仙案之咏,近世居家,中堂之下亦是不可或缺之物。一张八仙桌承载了许多人一生的回忆
五音是什么(五音指哪些)五音是什么(五音指哪些)配图唐代壁画及陶俑古代音乐中的五音,指的是宫商角征羽,五行配属为土金木火水。礼记记载宫音代表天子,统帅众音,商音代表臣子,角音代表百姓,征音代表政事,羽音代
达瓦西里(达瓦里希和达瓦西里)达瓦西里(达瓦里希和达瓦西里)作,望大家多多指教。看见这个标题,你是不是有点小吃惊,虽然知道音乐不分国界,华语歌,英语歌,日语韩语等歌曲大家也没少听,但是12种。这个数是不是有点超
萧亚轩17个男朋友都是谁(萧亚轩有多少个男友)萧亚轩17个男朋友都是谁(萧亚轩有多少个男友)萧亚轩大家是否还能记得?如果不记得,那么她的歌你一定会唱,我站在屋顶,黄昏的光影,我听见爱情光临的声音,是不是调子就上来了,这下记得了
张梦尧(赵文琪)张梦尧(赵文琪)报业大众日报客户端202108201557558月20日上午,国寿杯乐拍CBD摄影大赛颁奖活动在济南中央商务区举行,标志着历时近半年的比赛正式落下帷幕。活动现场展示
辐射避难所怎么增加人口(辐射避难所快速生孩子)辐射避难所怎么增加人口(辐射避难所快速生孩子)FalloutShelter辐射避难所人口问题相信让不少玩家为之头痛,究竟如何控制好人口数量整体呢?下面就让我们留意下FalloutS
鬼谷子罐(鬼谷子下山元青花)鬼谷子罐(鬼谷子下山元青花)唐末道士杜光庭在录异记仙中说鬼谷先生者,古之真仙也,云姓王氏。自轩辕之代,历于商周。随老君西化流沙,洎周末,复还中国。居汉滨鬼谷山,受道弟子百余人。直接
中国航空公司排名(国内航空公司排名前十)中国航空公司排名(国内航空公司排名前十)民航之翼我国航空公司数量比较多,根据民航局2020年民航行业发展统计公报的数据显示。截至2020年底,我国共有运输航空公司64家,其中客运航
长白山自助游攻略(五一长白山天池最简便游玩攻略)长白山自助游攻略(五一长白山天池最简便游玩攻略)长白山天池是世界级的著名景点,应该家喻户晓妇孺皆知吧!我在这里就不细致地介绍了,经常看到有的写手为了博人眼球,文章称某某景点是一生必
北京旅游攻略(自己去北京玩的攻略)北京旅游攻略(自己去北京玩的攻略)悟空研学小知识故宫博物院为国家AAAAA级旅游景区全国重点文物保护单位爱国主义教育基地世界文化遗产。故宫博物院是在明清两代皇宫及其收藏的基础上建立
峨眉山旅游攻略(峨眉山的旅游攻略)峨眉山旅游攻略(峨眉山的旅游攻略)欢迎来到无尾象和猫的旅行探险事务所,请随我一起去发现那些不为人知的小众旅行故事吧!因为每次出门都渴望能找到一份对目的地旅游有用的攻略,但一般网上找
养马岛旅游攻略(养马岛各景点介绍)养马岛旅游攻略(养马岛各景点介绍)养马岛位于烟台北部黄海之中,总面积约10平方公里,岛上风光秀美,空气清新。养马岛依靠秀丽的风光,每年吸引无数游客,到养马岛享受这座小岛的别样风情。
峨眉山特色美食有哪些(峨眉山吃的特色美食攻略)峨眉山特色美食有哪些(峨眉山吃的特色美食攻略)峨眉山,世界自然文化双遗产地到底有什么值得打卡的地方呢?请往下看!报国寺的七佛宝殿看上去千斤重的佛像实际只有13公斤去看看到底是什么工
乐山大佛旅游攻略(乐山大佛峨眉山一日游攻略)乐山大佛旅游攻略(乐山大佛峨眉山一日游攻略)乐山距离成都150km左右,高速收费54元,耗时2小时左右,不仅是一座名副其实的美食之都,还有网红嘉阳小火车,更有乐山大佛和峨眉山名胜,
武夷山在哪里(武夷山属于哪里)武夷山在哪里(武夷山属于哪里)前段时间,有朋友问武夷山,到底是福建的,还是江西的?讲真,听到这样的问题,一时间,确实令人难以回答!我笑着说武夷山,是中国的!其实,这些年,关于武夷山
武夷山在哪(武夷山的景点)武夷山在哪(武夷山的景点)前段时间,有朋友问武夷山,到底是福建的,还是江西的?讲真,听到这样的问题,一时间,确实令人难以回答!我笑着说武夷山,是中国的!其实,这些年,关于武夷山到底
手机不能发短信(短信不能发送怎么回事)手机不能发短信(短信不能发送怎么回事)以前刚开始玩手机的小编,对手机并不是很熟悉,在突然手机发不出短信,小编每次特别惊讶地对手机说什么鬼,最后找找度娘聊聊天才弄明白,好了,小编真的
免费发手机短信(用软件发短信)免费发手机短信(用软件发短信)202012211648骑着蜗牛去赶场有没有小伙伴遇到过给银行或营运商发送指令短信得不到回复的情况?今天遇到可把我整得够呛。陪伴我三年的前任手机英勇退