Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
imi
imi
提交
c5665fd3
imi
项目概览
imi
/
imi
10 个月 前同步成功
通知
53
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
imi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c5665fd3
编写于
8月 13, 2022
作者:
weixin_47267244
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test
上级
9d0e1c22
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
111 addition
and
1 deletion
+111
-1
src/Components/swoole/src/Server/Listener/OnGetConnectionCountRequest.php
...woole/src/Server/Listener/OnGetConnectionCountRequest.php
+42
-0
src/Components/swoole/src/Server/Listener/OnGetConnectionCountResponse.php
...oole/src/Server/Listener/OnGetConnectionCountResponse.php
+30
-0
src/Components/swoole/src/Server/Util/LocalServerUtil.php
src/Components/swoole/src/Server/Util/LocalServerUtil.php
+39
-1
未找到文件。
src/Components/swoole/src/Server/Listener/OnGetConnectionCountRequest.php
0 → 100644
浏览文件 @
c5665fd3
<?php
declare
(
strict_types
=
1
);
namespace
Imi\Swoole\Server\Listener
;
use
Imi\Bean\Annotation\Listener
;
use
Imi\Event\EventParam
;
use
Imi\Event\IEventListener
;
use
Imi\RequestContext
;
use
Imi\Server\ServerManager
;
use
Imi\Swoole\Server\Contract\ISwooleServer
;
use
Imi\Swoole\Server\Server
;
/**
* 获取当前连接数量-请求
*
* @Listener(eventName="IMI.PIPE_MESSAGE.getConnectionCountRequest")
*/
class
OnGetConnectionCountRequest
implements
IEventListener
{
/**
* {@inheritDoc}
*/
public
function
handle
(
EventParam
$e
):
void
{
$eData
=
$e
->
getData
();
$workerId
=
$eData
[
'workerId'
]
??
-
1
;
$data
=
$eData
[
'data'
];
$serverName
=
$data
[
'serverName'
];
RequestContext
::
set
(
'server'
,
$server
=
ServerManager
::
getServer
(
$serverName
,
ISwooleServer
::
class
));
/** @var ISwooleServer $server */
if
(
$data
[
'needResponse'
]
??
true
)
{
Server
::
sendMessage
(
'getConnectionCountResponse'
,
[
'messageId'
=>
$data
[
'messageId'
],
'result'
=>
iterator_count
(
clone
$server
->
getSwoolePort
()
->
connections
),
'serverName'
=>
$serverName
,
],
$workerId
,
$serverName
);
}
}
}
src/Components/swoole/src/Server/Listener/OnGetConnectionCountResponse.php
0 → 100644
浏览文件 @
c5665fd3
<?php
declare
(
strict_types
=
1
);
namespace
Imi\Swoole\Server\Listener
;
use
Imi\Bean\Annotation\Listener
;
use
Imi\Event\EventParam
;
use
Imi\Event\IEventListener
;
use
Imi\Swoole\Util\Co\ChannelContainer
;
/**
* 获取当前连接数量-响应.
*
* @Listener(eventName="IMI.PIPE_MESSAGE.getConnectionCountResponse")
*/
class
OnGetConnectionCountResponse
implements
IEventListener
{
/**
* {@inheritDoc}
*/
public
function
handle
(
EventParam
$e
):
void
{
$data
=
$e
->
getData
()[
'data'
];
if
(
ChannelContainer
::
hasChannel
(
$data
[
'messageId'
]))
{
ChannelContainer
::
push
(
$data
[
'messageId'
],
$data
);
}
}
}
src/Components/swoole/src/Server/Util/LocalServerUtil.php
浏览文件 @
c5665fd3
...
...
@@ -643,7 +643,45 @@ class LocalServerUtil implements ISwooleServerUtil
*/
public
function
getConnectionCount
(
?string
$serverName
=
null
):
int
{
return
$this
->
getServer
(
$serverName
)
->
getSwoolePort
()
->
connections
->
count
();
$server
=
$this
->
getServer
(
$serverName
);
$swooleServer
=
$server
->
getSwooleServer
();
if
(
\
SWOOLE_BASE
===
$swooleServer
->
mode
)
{
$result
=
0
;
$id
=
uniqid
(
''
,
true
);
try
{
$channel
=
ChannelContainer
::
getChannel
(
$id
);
$count
=
$this
->
sendMessage
(
'getConnectionCountRequest'
,
[
'messageId'
=>
$id
,
'serverName'
=>
$server
->
getName
(),
'needResponse'
=>
true
,
]);
if
(
ProcessType
::
PROCESS
!==
App
::
get
(
ProcessAppContexts
::
PROCESS_TYPE
))
{
for
(
$i
=
$count
;
$i
>
0
;
--
$i
)
{
$popResult
=
$channel
->
pop
(
$this
->
waitResponseTimeout
);
var_dump
(
__METHOD__
,
$popResult
);
if
(
false
===
$popResult
)
{
break
;
}
$result
+=
(
$popResult
[
'result'
]
??
0
);
}
}
return
$result
;
}
finally
{
ChannelContainer
::
removeChannel
(
$id
);
}
}
else
{
return
iterator_count
(
clone
$this
->
getServer
(
$serverName
)
->
getSwoolePort
()
->
connections
);
}
}
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录