• 技术文章 >php框架 >Swoole

    swoole fd是什么

    (*-*)浩(*-*)浩2019-12-06 09:16:03原创1674

    fd是tcp连接的文件描述符,在swoole_server中是客户端的唯一标识符

    fd是复用的,当连接关闭后fd会被新进入的连接复用 (推荐学习: swoole视频教程

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

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

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

    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是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:swoole
    上一篇:swoole比go高的原因 下一篇:swoole task怎么用
    大前端线上培训班

    相关文章推荐

    • thinkphp 6.0 swoole扩展websocket使用教程• Swoole在PHP-fpm/apache中使用task功能• php编译安装扩展redis及swoole• swoole会使php流行吗

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网