目录Swoole创建服务器介绍(下)创建服务器(下)异步任务任务持续更新中。..1.创建tcp服务器首先根据文档创建一个tcp服务器set(['worker_num'=>4,//worker进程数一般为cpus数的1-4倍'max_request'=>10000,//worker进程处理完n个请求后运行完毕,重建一个]);//这里//当然还有很多设置参数文档传送门:https://wiki.swoole.com/wiki/page/13.html//L监听连接入口事件(这里是一个闭包的写法)连接后调用的函数//$fd客户端连接唯一标记//$reactor_id线程id是一个自增数,范围从1到1600万。fd超过1600万后,自动从1开始复用。$serv->on('connect',function($serv,$fd,$reactor_id){echo"Client:{$reactor_id}-{$fd}-Connect.\n";});//监听数据接收事件//$data为接收到的数据$serv->on('receive',function($serv,$fd,$reactor_id,$data)){$serv->send($fd,"服务器:".$data);echo'收到数据'.$data;});//监听连接关闭事件$serv->on('close',function($serv,$fd){echo"Client:Close".$fd."\n";});//启动服务器$serv->start();ok我们测试一下phptcp.php开启tcp服务器(如果端口被占用,杀掉占用端口进程,ctrl+c关闭,ctrl+z挂起)然后打开telnet(我们需要再开一个终端)测试是否成功,输入eqqeq然后查看tcpserver可以看到这里,我们梳理一下思路:创建一个tcp服务器->telnet连接服务器->tcp执行connect->telnent发送信息->tcp监听receive事件->telnent断开连接->tcp监听close事件问题1。server和telnet的关系服务器和客服终端的关系,一个server对应多个telnet2.$serv->send($fd,"Server:".$data);直接输出echo有什么区别?send是向对方发送数据(连接到我的服务器),比如你用微信和朋友聊天,你发送一个服务器:".$data,然后相当于给朋友发消息,echo是输出内容,只给自己3.线程和进程是什么鬼?相当于一个工厂(CPU)中的多个车间(进程)。一个车间(进程)有很多工人(线程)。车间有厕所(共享内存),工人可以共用,但是要等工人用完。往里走,我们一般把php作为单进程使用,所以大厂用的是车间,效率当然慢,所以需要多个车间(多进程)和多个员工(线程)来提高效率注意:修改serverscript每次执行文件后,必须先关闭进程再重新打开才能生效。二、创建udp服务器1、TCP和ucp都是传输层协议,但UDP服务器与TCP服务器不同。UDP没有连接的概念。UDP消耗的资源相对较小,但速度很快。启动服务器后,客户端可以直接向服务器监听的9502端口发送数据包,无需连接。2、udp的创建方法和tcp的很相似//只是把最后一个参数改成SWOOLE_SOCK_UDP$serv=newswoole_server("127.0.0.1",9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);3.UDP服务器可以代替telnetnetcat-u连接测试nc安装:yum-yinstallyum-yinstallnc.x86_64使用是直接nc-u127.0.0.195024.完成实现//创建Server对象,监听127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP$serv=newswoole_server("127.0.0.1",9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);//udp没有$serv->onconnect的概念//监听数据接收事件$serv->on('Packet',function($serv,$data,$clientInfo){$serv->sendto($clientInfo['address'],$clientInfo['port'],"Server".$data);var_dump($clientInfo);});//启动服务器$serv->start();5.测试,我们也开两个终端udp服务器这里打印$clientInfoctestserverok测试没问题^-^思考:tcp和udp都是传输层协议服务器,那么基于传输层的应用层服务器呢?如果这篇文章对你有用,可以点个赞或者收藏一下,是对作者的鼓励~文档地址传送门:https://wiki.swoole.com/wiki/...推荐singwa老师的视频教程:https://coding.imooc.com/clas...小弟的网址也附上。..www.entercode.cn推广一波...
