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

new worker單獨處理定時器的問題

javascript

Gateway游戲項目,不同房間游戲開始之前定時30秒,30秒后開始處理游戲,上次的問題雖然搞定了異步進行,現(xiàn)在問題是前端顯示會跳過秒數(shù),比如30 29 直接27了這樣,這個秒數(shù)我是從數(shù)據(jù)庫讀出來每一秒都返回給前端,會不會是這個頻繁操作數(shù)據(jù)庫引起的?如果客戶端開多了房間,我估計很快就卡住了,看了社區(qū)的問題想單獨開啟個進程來處理定時器,麻煩指導(dǎo)下該怎么做,新手, 謝謝了。

下面是別人問題中的 http://wenda.workerman.net/?/question/1020
Events.php

public static function onConnect($client_id)
    {
        $task_connection = new AsyncTcpConnection('Text://127.0.0.1:13000');
        $task_connection->send('send to task workerman');
        $task_data = array(
            'function' => 'send_mail',
            'args' => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),
        );
        $task_connection->send(json_encode($task_data));
        $task_connection->onMessage = function($task_connection, $task_result){
             // 結(jié)果
             var_dump($task_result);
             // 獲得結(jié)果后記得關(guān)閉鏈接
             $task_connection->close();
        };
        // 執(zhí)行異步鏈接
        $task_connection->connect();
}

然后這段代碼該放在哪里呢

$task_worker = new Worker('Text://127.0.0.1:13000');
$task_worker->count = 10;
$task_worker->name = 'TaskWorker';
$task_worker->onMessage = function($connection, $task_data){
    $task_data = json_decode($task_data, true);
    $task_result = 'fuck you';
    $connection->send(json_encode($task_result));
};
if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}
4664 3 0
3個回答

walkor 打賞

一個簡單的倒計時為什么讀數(shù)據(jù)庫呢?直接一個每秒一次的定時器記錄下變量累減就好了。

定時器放在單獨進程或者其它進程都可以,看自己會哪種。

  • javascript 2017-07-06

    不同房間游戲開始的時候倒計時累減的變量不會被覆蓋嗎

walkor 打賞

操作不同的變量就好了。
例如搞個全局數(shù)組

global $time_map;
$time_map = array(
    '房間1' => 當(dāng)前秒數(shù),
    '房間2' => 當(dāng)前秒數(shù),
     ...
)
Timer::add(1, function()use($房間號, $connection){
    global $time_map;
    $time_map--;
    $connection->send($time_map);
});
  • javascript 2017-07-06

    謝謝,我試試。。。。use 里面的$connection參數(shù)是什么來的。發(fā)送到哪里去的

你好,能說下workman怎么new worker 單獨處理定時器嗎

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