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

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

chenyeyu

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

while(true){

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

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

4890 2 0
2個(gè)回答

chenyeyu

我試著在start_gateway寫(xiě)定時(shí)器,可惜使用sendToAll就報(bào)錯(cuò)。。

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

  • 暫無(wú)評(píng)論
walkor 打賞

gateway只管網(wǎng)絡(luò)io,業(yè)務(wù)邏輯請(qǐng)?jiān)赽usinessworker中寫(xiě)。

可以在businessworker->onWorkerStart里面寫(xiě),如果只想在其中一個(gè)進(jìn)程運(yùn)行,就判斷下$businessworker->id,比如只在$businessworker->id===0的進(jìn)程中運(yùn)行

打開(kāi)start_businessworker.php
合適的位置加上

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

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

  • walkor 2016-08-10

    不客氣

  • chenyeyu 2016-08-10

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

  • chenyeyu 2016-08-10

    看手冊(cè),好像是不允許

  • walkor 2016-08-10

    可以

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??