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

【已解決】使用 gateway-worker 的 onWebSocketConnect 里面的定時器不執(zhí)行

xiaoming

解決

1 定時是有執(zhí)行的
2 是邏輯代碼問題,定時器不能直接獲取$_SESSION
3 感謝 @six

問題描述

1 執(zhí)行php7.4 start.php status 命令, 狀態(tài)都是idle 且 單個進程的定時器看了 基本不超過3個
2 Event.php 代碼中,沒刪除定時器的代碼
3 正式和測試的都是采取靜態(tài)單文件的php.4,環(huán)境應該是一樣
4 測試環(huán)境正常,正式不正常
5 正式和測試的代碼采取restart -d 執(zhí)行,且版本號一樣
6 我該如何排查比較合適

程序代碼或配置

public static function onWebSocketConnect($client_id, $data)
{
        $_SESSION['request_data'] = $data;
        self::isDebug($data['get']['debug']??"");
        $timer_id = Timer::add(5,function () use($client_id,&$timer_id){

            // 測試環(huán)境有執(zhí)行,正式?jīng)]有,沒想到什么原因會這樣,很神奇
            if(self::isDebug()){
                Gateway::sendToClient($client_id, WsData::dataPackJson(
                    WsData::A_OK,[],"調試模式 定時任務ID執(zhí)行:{$timer_id}"));
            }
            self::auth();
            if(empty($_SESSION['auth_id'])){
                Gateway::closeClient($client_id, WsData::dataPackJson(
                    WsData::A_AUTH_MISS,[],"請先認證_v1"));
            }
        },[],false);
        if(self::isDebug()){

            //有發(fā)送
            Gateway::sendToClient($client_id, WsData::dataPackJson(
                WsData::A_OK,[],"調試模式 定時任務ID開始:{$timer_id}"));
        }
}

 public static function isDebug($data = null): bool
    {
        if (func_num_args() <= 0) {
            return !empty($_SESSION['request_debug']);
        }
        $_SESSION['request_debug'] = $data == "jQfSfuGdzMVdDa";
        return $_SESSION['request_debug'];
    }
741 1 0
1個回答

six

定時器是否執(zhí)行你要記錄日志或者輸出點數(shù)據(jù)到重點看下,而不是靠你業(yè)務邏輯來判定。直接在定時器里第一行打日志或者echo 點東西看下執(zhí)行到?jīng)]。

還有,定時器里不能用$_SESSION,定時器里用$_SESSION業(yè)務邏輯必然出現(xiàn)bug,定時器里用Gateway的session接口

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