千家信息网

怎样理解服务端中TCP/UDP服务器的属性

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关怎样理解服务端中TCP/UDP服务器的属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。$settingServer->s
千家信息网最后更新 2026年10月31日怎样理解服务端中TCP/UDP服务器的属性

这篇文章将为大家详细讲解有关怎样理解服务端中TCP/UDP服务器的属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

$setting

Server->set()函数所设置的参数会保存到Server->setting属性上. 在回调函数中可以访问运行参数的值.

Swoole\Server->setting

demo:

$server = new Swoole\Server('127.0.0.1', 9501);$server->set([    'worker_num'=>4,]);var_export($server->setting);echo PHP_EOL;//$server->start(); //这里不需要start就可以执行上面的代码

直接运行:

$master_pid

返回当前服务器主进程的PID

Swoole\Server->master_pid: int

demo:

$server = new Swoole\Server('127.0.0.1', 9501);$server->set([    'worker_num'=>4,]);var_export($server->setting);echo PHP_EOL;$server->on('start', function(Swoole\Server $server){    //获取当前服务器主进程的 PID    echo 'master_pid:'.$server->master_pid.PHP_EOL;});$server->on('receive', function(Swoole\Server $server, $fd, $reactor_id, $data){    //收到客户端信息, 回复内容, 并关闭连接    $server->send($fd, 'Swoole Server received your data:'.trim($data).PHP_EOL);    $server->close($fd);});$server->start();

启动服务并使用telnet连接, 然后在客户端发送消息"aaa":

$manager_pid

但会当前服务器管理进程的PID

Swoole\Server->manager_pid: int

只能在onStart、onWorkerStart之后获取到

demo:

$server = new Swoole\Server('127.0.0.1', 9501);$server->on('start', function(Swoole\Server $server){    //获取当前服务器管理进程的 PID    echo 'manager_pid:'.$server->manager_pid.PHP_EOL;});$server->on('receive', function(Swoole\Server $server, $fd, $reactor_id, $data){    //收到客户端信息, 回复内容, 并关闭连接    $server->send($fd, 'Swoole Server received your data:'.trim($data).PHP_EOL);    $server->close($fd);});$server->start();

和上面一样, 启动服务并使用telnet连接, 然后在客户端发送消息"aaa":

$worker_id

得到当前Worker进程的编号, 包括Task进程.

Swoole\Server->worker_id: int

demo:

$server = new Swoole\Server('127.0.0.1', 9501);$server->set([    'worker_num'=>4,    'task_worker_num'=>4,]);$server->on('workerStart', function(Swoole\Server $server, $workerId){    if($server->taskworker){        echo 'task workerId:'.$workerId;        echo ', task worker_id:'.$server->worker_id.PHP_EOL;    }else{        echo 'workerId:'.$workerId;        echo ', worker_id:'.$server->worker_id.PHP_EOL;    }});//必须设置onReceive事件回调函数$server->on('receive', function(Swoole\Server $server, $fd, $reactor_id, $data){});//必须设置onTask事件回调函数$server->on('task', function(Swoole\Server $server, $task_id, $reactor_id, $data){});$server->start();

启动服务器:

  • 这个Swoole\Server->worker_id属性与onWorkerStart的$worker_id是相同的.

  • Worker进程编号范围是[0, $server->setting['worker_num'] - 1]

  • Task进程编号范围是: [$sever->setting['worker_num'], $server->setting['worker_num'] + $server->setting['task_worker_num']].

Worker进程重启后worker_id的值是不变的

$worker_pid

得到当前Worker进程的操作系统进程ID, 与posix_getpid()的返回值相同.

Swoole\Server->worker_pid: int

$taskworker

当前进程是否是Task进程

Swoole\Server->taskworker: bool

返回值: true表示当前进程是Task工作进程, 否则就是Worker进程

$connections

TCP连接迭代器, 可以使用foreach遍历服务器当前所有的连接, 此属性的功能与Server->getClientList是一致的, 但是更加友好.

遍历的元素为单个连接的fd.

Swoole\Server->connections

$connections属性是一个迭代器对象, 不是PHP数组, 所以不能用var_dump或者数组下标来访问, 只能通过foreach来循环.

  • Base 模式

    • SWOOLE_BASE模式下不支持夸进程操作TCP连接, 因此在BASE模式中, 只能在当前进程内使用$connections迭代器.

demo:

foreach($server->connections as $fd){    var_dump($fd);}echo '当前服务器共有'.count($server->connections).'个连接'.PHP_EOL;

$ports

监听的端口数组. 如果服务器监听了多个端口, 可以遍历Server::$ports得到所有Swoole\Server\Port对象.

其中swoole_server::$ports[0]为构造方法所设置的主服务器端口.

$ports = $server->ports;$ports[0]->set($settings);$ports[1]->on('receive', function(){    //onReceive event callback function});```

关于怎样理解服务端中TCP/UDP服务器的属性就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

进程 服务 服务器 属性 内容 函数 客户 客户端 数组 模式 端口 迭代 相同 事件 信息 参数 对象 文章 更多 消息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 科技金融是不是互联网金融 上海万想互联网科技 互联网科技公司做什么 互联网实体化科技化 中国互联网有什么科技含量 北京华百购互联网科技有限公司 常德市电业局互联网科技部 上海宁丞科技互联网 银川新华互联网科技学校联系电话 畅思互联网科技 华夏恒生互联网科技013171 科技赋能视角下互联网保险发展 滨湖区互联网智能科技产品有哪些 神州科技互联网有限公司 求路客互联网科技电话 米泉互联网科技专业怎么样 互联网科技和医药行业 三亚科技创新互联网基地 陕西彩京云互联网科技有限公司 花魁咖啡 什么是科技互联网 狮子座互联网科技 智网互联网科技 深圳齐家互联网科技 安控科技rtu产品工业互联网 滨湖区互联网智能科技产品有哪些 安徽零酒互联网科技有限公司 互联网科技大会大佬 瑞安市蟠桃会互联网科技有限公司
0