public static function onMessage($client_id, $message)
{
var_dump($message);// 向所有人发
while($message==1) {
$timesleep=2;
sleep($timesleep);
Gateway::sendToClient($client_id, $_SERVER['REMOTE_ADDR']);
if($message==2){
break;
var_dump($message);
}
}
}
禁止使用死循环,更不要用sleep系统调用,改用定时器实现。
请教一下,大体的思路时怎么样的。就是服务器对客户端不段的发送信息1,值到客户端反馈2时停止
@6964:
根据你图示的代码逻辑大致是这样的:
$worker->onMessage = function($connection, $data){
if(empty($connection->timer_id) && 1 == $data)
{
$connection->timer_id = Timer::add(2, function()use($connection){
//发送数据到客户端
}, [], true);
}
}
另外如果是在gatewayworker框架里做,一样的思路,把timer_id存给当前worker对象的一个静态数组;
谢谢了,