php 调用一个 Worker的内部端口 要20秒才能返回状态

$worker->onWorkerStart = function () use ($worker) {

// 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符
$inner_text_worker = new Worker('http://0.0.0.0:5898');
$inner_text_worker->onMessage = function ($connection) use ($worker) {

$data = input('post.');
$data = json_encode($data);

foreach ($worker->uidConnections as $connection) {
$connection->send($data);
}

// 返回推送结果

};
$inner_text_worker->listen();

Timer::add(3, function () use ($worker) {
$time_now = time();
foreach ($worker->uidConnections as $connection) {
// 有可能该connection还没收到过消息,则lastMessageTime设置为当前时间
if (empty($connection->lastMessageTime)) {
$connection->lastMessageTime = $time_now;
continue;
}
// 上次通讯时间间隔大于心跳间隔,则认为客户端已经下线,关闭连接
if ($time_now - $connection->lastMessageTime > 25) {
$connection->close();
}

}
});
};
2018-01-31 17:15 添加评论 分享
已邀请:
0

keytehu

赞同来自:

大哥,你$inner_text_worker->onMessage 里面都没给http客户端返回任何东西,http客户端当然收不到任何返回啊。

$inner_text_worker->onMessage 里面第一行加一句 $connection->send('我收到了'); 试下,也就是收到http请求后立刻http返回一句

要回复问题请先登录注册

退出全屏模式 全屏模式 回复