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();
}
}
});
};
1个回答
年代过于久远,无法发表回答
大哥,你$inner_text_worker->onMessage 里面都没给http客户端返回任何东西,http客户端当然收不到任何返回啊。
$inner_text_worker->onMessage 里面第一行加一句 $connection->send('我收到了'); 试下,也就是收到http请求后立刻http返回一句