国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

怎么實現(xiàn)單一的查詢,然后發(fā)送給所有人

chenyeyu

我的需求是每隔一段時間查詢數(shù)據(jù)庫,然后推送給所有人
代碼類似如下:

while(true){

    $sql ="select 1+1";
    $count=$mysql->query($sql);
    Gateway::sendToAll(json_encode($count));
    sleep(1000);
}

我現(xiàn)在用websocket的onMessage來寫這個的話,但是他是每個客戶端連接上來都要開一份這個代碼在運行。
如何才能實現(xiàn)只運行一個代碼,所有客戶都能接受到啊。。

4754 2 0
2個回答

chenyeyu

我試著在start_gateway寫定時器,可惜使用sendToAll就報錯。。

\Workerman\Lib\Timer::add(2, function() {
\GatewayWorker\Lib\Gateway::sendToAll('1111');
});

  • 暫無評論
walkor 打賞

gateway只管網(wǎng)絡(luò)io,業(yè)務(wù)邏輯請在businessworker中寫。

可以在businessworker->onWorkerStart里面寫,如果只想在其中一個進程運行,就判斷下$businessworker->id,比如只在$businessworker->id===0的進程中運行

打開start_businessworker.php
合適的位置加上

$businessworker->onWorkerStart = function($businessworker) {
    // 只在0號businessworker設(shè)置定時器
    if ($businessworker->id === 0) {
        \Workerman\Lib\Timer::add(2, function() {
        \GatewayWorker\Lib\Gateway::sendToAll('1111');
    });
    }
}
  • chenyeyu 2016-08-10

    哈哈。我剛弄得這個啊,在想如何只在一個進程中進行呢,你就告訴我答案了,謝謝老板

  • walkor 2016-08-10

    不客氣

  • chenyeyu 2016-08-10

    順便問下,在start_businessworker.php這里可以使用\GatewayWorker\Lib\Db嗎

  • chenyeyu 2016-08-10

    看手冊,好像是不允許

  • walkor 2016-08-10

    可以

年代過于久遠,無法發(fā)表回答
??