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

關(guān)於Timer進(jìn)入方式

horskin

問題描述

使用Laravel 架設(shè) gateway workerman
情境:目前每分鐘有排程會倒數(shù)60秒
程式碼如下

public static function StartGame()
    {
        Gateway::$registerAddress = '127.0.0.1:1236';
        $GameData = PowerSystemCache::Get_Status();
        if(!$GameData['status']){
            //deal flag
                ...
            $time = 60;
            $stage_message = array('status'=>true,'action'=>'CountDown','flag'=>$flag,"count_time"=>$time,'time' => date('Y-m-d H:i:s'));
            for($i=1;$i<=$time;$i++) {
                $t = $i;
                $timer = Timer::add($i, function() use ($room_type,$stage_message,$time,$t){
                    $stage_message["timer"] = $time - $t;
                    Gateway::sendToGroup($room_type, json_encode($stage_message));
                },null,false);
            }

            $newt_timer = Timer::add(60, function() use($room_type,$flag){
                PowerSystemCache::Set_Status(false,$flag);
                self::EndGame($flag);
                //end game
                $stage_message = array('status'=>true,'action'=>'EndGame','time' => date('Y-m-d H:i:s'));
                Gateway::sendToGroup($room_type, json_encode($stage_message));
                self::StartGame();
            },null,false);
            PowerSystemCache::Set_Status(true,$flag);
        }
        return;
    }

此timer在每60秒後會遞迴

方案探討

問題一
首先想先詢問這樣實作timer的方式會不會有問題?因為是一次生成60個timer分別從60s~0s

問題二:進(jìn)程進(jìn)入方式

目前方法

啟動這個timer的方式,是透過client socket 傳送封包到指定方法例如:StartGame()的方式進(jìn)入循環(huán)排程,因為這個方法是會一直遞迴也有加lock在方法內(nèi)。但是這樣這個進(jìn)程是否會受到client端影響而造成不穩(wěn)定?

方法二

目前有想採用task方法來執(zhí)行StartGame方法讓其進(jìn)行遞迴,使其不受client端影響導(dǎo)致這個線程受影響,是否這個方法會比較可行?麻煩大大協(xié)助分析

延伸問題
之所以會探討這個問題是因為,我有其他laravel task 因為有業(yè)務(wù)邏輯error 導(dǎo)致socket排程中斷
是否只是因為業(yè)務(wù)邏輯error進(jìn)而導(dǎo)致workerman 受影響?

1177 1 0
1個回答

walkor 打賞

問題一
沒問題

問題二:進(jìn)程進(jìn)入方式
需要自己測試驗證,根據(jù)你提供的資訊無法給出建議

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