如何使用定时器功能,每间隔一段时间,给用户发送消息

擦擦擦擦擦擦

如何使用定时器功能,每间隔一段时间,给用户发送消息 能详细讲解下吗 我看你的代码没看太明白呀

2020 2 0
2个回答

walkor

Timer::add(10, function(){
        Gateway::sendToAll('something');
});
每10秒给所有用户发送信息something

  • 擦擦擦擦擦擦 2019-04-21

    你好 你误会我的意思了 这个定时器是放在哪里? 是回调函数里面吗? 有人说是这个方法里面 onWorkerStart,但是这个方法里面是有几个进程就会重复发送很多次

walkor

function onWorkerStart($worker) {
    // 只在0号进程开启定时器
    if ($worker->id == 0) {
        Timer::add(10, function(){
            Gateway::sendToAll('something');
        });
    }
}

  • 擦擦擦擦擦擦 2019-04-25

    受教了。我搞搞试试

  • 擦擦擦擦擦擦 2019-04-25

    老哥我看了一天别的思路 基本上都是你在回 所以 我想请问你下 客服给底层发送关闭的心跳 我把定时器放到这个回掉里面 但是会重复生成这个延时器

  • 擦擦擦擦擦擦 2019-04-25

    ws.onmessage = function(e) {
    receiveMessageTimer = setTimeout(() => {
    console.log('这是关闭');
    ws.close();
    }, 1000 * 10); // 30s没收到信息,代表服务器出问题了,关闭连接。如果收到消息了,重置该定时器。

年代过于久远,无法发表回答
🔝