php教程 swoole用什么保存fd

 所属分类:php教程

 浏览:132次-  评论: 0次-  更新时间:2022-06-02
描述:这是一篇php教程 swoole用什么保存fd的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。 from_id是来自于哪个re...
这是一篇php教程 swoole用什么保存fd的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。

from_id是来自于哪个reactor线程

fd是tcp连接的文件描述符,在swoole_server中是客户端的唯一标识符 (推荐学习: swoole视频教程)

fd是复用的,当连接关闭后fd会被新进入的连接复用

正在维持的TCP连接fd不会被复用

调用swoole_server->send/swoole_server->close函数需要传入$fd参数才能被正确的处理。

如果业务中需要发送广播,需要用apc/redis/memcache/swoole_table将fd的值保存起来。

1.6.0以上版本不再需要from_id参数,swoole本身提供了ConnectionList可以查询到当前所有的fd和对应from_id

1.7.10以上版本,fd不再是文件描述符。fd是一个自增数字,范围是 1 ~ 1600万

fd超过1600万后会自动从1开始进行复用

function my_onReceive($serv, $fd, $from_id, $data)  {
    //向Connection发送数据
    $serv->send($fd, 'Swoole: '.$data); 
    //关闭Connection
    $serv->close($fd); 
}

$fd为什么使用整形

$fd 使用整形而不是使用对象,主要原因是swoole是多进程的模型,在Worker进程/Task进程中随时可能要访问某一个客户端连接,如果使用对象,那就需要进行Serialize/Unserialize。增加了额外的性能开销。$fd 如果是整数那就可以直接存储传输被使用。

在PHP层可以也客户端连接可以封装成对象。面向对象的好处是可读性更好,对连接的操作可以封装到方法中。如

$connection->send($data);
$connection->close();

以上就是swoole用什么保存fd的详细内容,更多请关注zzsucai.com其它相关文章!

 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!