php的异步非阻塞swoole模块使用实现简易tcp服务器

Posted saintdingspage

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php的异步非阻塞swoole模块使用实现简易tcp服务器相关的知识,希望对你有一定的参考价值。

  • 绑定tcp服务器的地址

$swserver = new swoole_server("127.0.0.1",9501);

  • 设置tcp服务器装机容量(太危言耸听了~其实就是设置属性)

$swserver->set([

  ‘worker_num‘=>8,

  ‘max_request‘=>10000

]);

  • 读取连接请求信息---接通

$swserver->on(‘connect‘,function($swserver,$fd,$reactor_id){

  echo "server线程:{$reactor_id}受到来自客户端线程{$fd}的请求";  

});

  • 向客户端发送数据(我们姑且这样做,客户端发来什么,我们原样返回什么)

$swserver->on(‘receive‘,function($swserver,$fd,$reactor_id,$data){

  $swserver->send($fd,"服务器线程{$reactor_id}收到了来自客户端线程{$fd}的数据,并原样返回,其内容为:{$data}");

});

  • 结束与客户端的对话

$swserver->on(‘close‘,function($swserver,$fd){

  echo "服务端{$swserver}与客户端{$fd}的对话结束!";

});

  • 开启服务端

$swserver->start();

如果上机实验时提示:failed, Error: Address already in use[98]
则利用 lsof -i:端口号  查看端口上运行的进程
然后运行sudo kill -9 进程号,杀掉占用端口的进程

 

另外开启一个终端窗口,运行命令telnet 127.0.0.1 9501连接服务端

服务端显示:

[[email protected] myswoole]# php swserver2.php
server线程:2受到来自客户端线程1的请求

客户端发送信息:喜欢陈培昌,回显信息如下:

服务器线程2收到了来自客户端线程1的数据,并原样返回,其内容为:喜欢陈培昌

以上是关于php的异步非阻塞swoole模块使用实现简易tcp服务器的主要内容,如果未能解决你的问题,请参考以下文章

swoole 安装方法

六星教育-swoole-1911期swoole基础概念和长连接

centos7下安装PHP swoole扩展

使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM

使用 Swoole 来加速你的 Laravel 应用

异步非阻塞socket的实现