首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
先关闭tcp服务端终端窗口,再关闭telnet终端窗口,出现close_wait状态(全部是点叉 直接关闭窗口)
### 先关闭tcp服务端终端窗口,再关闭telnet终端窗口,出现close_wait状态(全部是点叉 直接关闭窗口) ### Swoole 4.4.12,PHP 7.3,centos7.6 ### 相关代码 **服务端代码** ```php <?php $server = new Swoole\Server("0.0.0.0", 9501); $server->on('connect', function ($server, $fd) { echo "Client:Connect.\n"; }); $server->on('receive', function ($server, $fd, $reactor_id, $data) { if('exit' == trim($data)){ $server->send($fd, 'Swoole: ' . $data); $server->close($fd); } }); $server->on('close', function ($server, $fd) { echo "Client: Close.\n"; }); $process = new Swoole\Process(function ($process) use ($server) { Swoole\Event::add(STDIN, function () use ($server) { foreach ($server->connections as $key => $fd) { $server->send($fd, fgets(STDIN)); } }); }, false, 2, 1); $server->addProcess($process); $server->start(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? **期望:消除close_wait,及产生原因** -- **实际:关闭终端窗口主进程被回收,查看swoole进程发现托管给manage进程的$process被重新启动,此时再关闭telnet终端窗口,发现worker和$process进程全部被重启,netstat -anp查看到close_wait状态** -- **为何关闭服务端窗口会导致add的进程重启,为何telnet客户端终端会导致worker等进程重启?这样worker算是die掉了吗 所以没法调用底层close函数吗 望大佬指点 十分感谢**
发布于6年前 · 4 次浏览 · 来自
提问
alwayslinger
### 先关闭tcp服务端终端窗口,再关闭telnet终端窗口,出现close_wait状态(全部是点叉 直接关闭窗口) ### Swoole 4.4.12,PHP 7.3,centos7.6 ### 相关代码 **服务端代码** ```php <?php $server = new Swoole\Server("0.0.0.0", 9501); $server->on('connect', function ($server, $fd) { echo "Client:Connect.\n"; }); $server->on('receive', function ($server, $fd, $reactor_id, $data) { if('exit' == trim($data)){ $server->send($fd, 'Swoole: ' . $data); $server->close($fd); } }); $server->on('close', function ($server, $fd) { echo "Client: Close.\n"; }); $process = new Swoole\Process(function ($process) use ($server) { Swoole\Event::add(STDIN, function () use ($server) { foreach ($server->connections as $key => $fd) { $server->send($fd, fgets(STDIN)); } }); }, false, 2, 1); $server->addProcess($process); $server->start(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? **期望:消除close_wait,及产生原因** -- **实际:关闭终端窗口主进程被回收,查看swoole进程发现托管给manage进程的$process被重新启动,此时再关闭telnet终端窗口,发现worker和$process进程全部被重启,netstat -anp查看到close_wait状态** -- **为何关闭服务端窗口会导致add的进程重启,为何telnet客户端终端会导致worker等进程重启?这样worker算是die掉了吗 所以没法调用底层close函数吗 望大佬指点 十分感谢**
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
还没有评论!