Эх сурвалжийг харах

fixed: 火山引擎上报函数处理过程中redis方法调用失当

gwang 3 жил өмнө
parent
commit
6e8f5dad15

+ 10 - 10
Gameserver/Amfphp/Services/AppServer.php

@@ -17,11 +17,11 @@ class AppServer {
     public function api() {
         $uniq = uniqid();                                                       # 自己生成一个唯一串,作为此次处理过程的标记。
         $GLOBALS['deal-uid'] = $uniq;                                           # 写入日志的时候带上,方便辨认同一个处理过程.
-        $GLOBALS['zoneid'] = req()->zoneid;                                     # 暂时未想到更好的方案         
+        $GLOBALS['zoneid'] = req()->zoneid;                                     # 暂时未想到更好的方案
         $err = self::BeforeProc();                                              # 预处理
         my_Assert(ErrCode::ok == $err, $err);                                   # 如果tk校验未通过
         $resp = self::Route();                                                  # 分发逻辑
-        self::AfterProc($resp);                                                 # 执行后处理逻辑 
+        self::AfterProc($resp);                                                 # 执行后处理逻辑
         return $resp;
     }
 
@@ -32,16 +32,16 @@ class AppServer {
         if (!GAME_ONLINE) {
             return ErrCode::ok;                                                 # 直接返回 0:成功
         }
-        my_Assert(!config::Inst()->isBaned(req()->uid), ErrCode::err_server_updating); # 检查封号 
+        my_Assert(!config::Inst()->isBaned(req()->uid), ErrCode::err_server_updating); # 检查封号
         if (self::isUpdating()                                                  # 检查是否处于更新阶段,暂停对玩家请求的响应。
                 && !config::Inst()->isTester(req()->uid)) {                     # 排除测试号
             return ErrCode::err_server_updating;
         }
         $ssd = GameConfig::service_schedule_getItem(1);                         # 服务计划(固定只有1条)
-        if (now() > $ssd->startts && now() < $ssd->endts) {                     # 在维护期间 
+        if (now() > $ssd->startts && now() < $ssd->endts) {                     # 在维护期间
             Err(ErrCode::err_server_maintaining, $ssd->reason);
         }
-        // todo: 检查clientVersion 判断是否应该强制升级  
+        // todo: 检查clientVersion 判断是否应该强制升级
         if (!Index::$isDebugging && now() - req()->ts > OFFSET_MSGTIME) {       # 如果服务端客户端时间戳超过规定误差,则消息非法
             return ErrCode::err_outtime;
         }
@@ -64,12 +64,12 @@ class AppServer {
     }
 
     /**
-     * 新版: 使用pdo_mysql+dao版本 
+     * 新版: 使用pdo_mysql+dao版本
      * @param type $resp
      */
     private static function LogCmd($resp) {
         $tablename = 'tab_op_log' . date('Ymd');                                # 今天的表名
-        $old_tablename = 'tab_op_log' . date('Ymd', now(-86400 * 21));          # 待删除的表名 日志保留21天 
+        $old_tablename = 'tab_op_log' . date('Ymd', now(-86400 * 21));          # 待删除的表名 日志保留21天
         $sql = sprintf('create table if not exists %s like `tpl_op_log_tab`;', $tablename); # 创建今天的表
         $sql .= sprintf('drop table if exists %s;', $old_tablename);            # 循环删除以前的表
         $sql .= sprintf("insert into %s (`uid`,`zoneid`,`cmd`,`days`,`param`,`ret`) values ('%s', %d, %d, %d, '%s', '%s');", #
@@ -81,11 +81,11 @@ class AppServer {
     }
 
     /**
-     * 路由方法 
+     * 路由方法
      */
     private static function Route() {
         $proc = OpeCode::getProc(req()->ope);                                   # 映射处理模块.
-        DebugHelper::print_stack_trace();
+//        DebugHelper::print_stack_trace();
         my_Assert($proc != "err", ErrCode::ope_err);                            # 未能找到对应的处理模块
         try {
             $resp = call_user_func(array($proc, 'procMain'), req());            # 调用对应的处理逻辑
@@ -94,7 +94,7 @@ class AppServer {
             }
             return $resp;                                                       # 返回值
         } catch (\Exception $ex) {                                              # 异常信息写入日志
-            $msg = CommUtil::str2UTF8($ex->getMessage());                       # 异常信息转下码 
+            $msg = CommUtil::str2UTF8($ex->getMessage());                       # 异常信息转下码
             Err(ErrCode::err_unknownn, "call_user_func got Exception: $msg");   # 返回给客户端
         }
     }

+ 13 - 11
Gameserver/Amfphp/util/CRedisUtil.php

@@ -115,7 +115,7 @@ class CRedisUtil {
         if (strtolower($ret) == "ok") {
             return true;
         }
-        $this->logErr($ret);
+        $this->logErr("replace" . $ret);
         return false;
     }
 
@@ -144,7 +144,7 @@ class CRedisUtil {
         if (strtolower($ret) == "ok") {
             return true;
         }
-        $this->logErr($ret);
+        $this->logErr("set" . $ret);
         return false;
     }
 
@@ -220,7 +220,7 @@ class CRedisUtil {
             $ret = $this->redis->set($key, $val);
         }
         if ("OK" != $ret) {
-            $this->logErr($ret);
+            $this->logErr("Set:" . $ret);
             return false;
         }
         return true;
@@ -305,8 +305,9 @@ class CRedisUtil {
 // 成功返回1, 失败返回0
         if (1 == $ret) {
             return true;
+        } else {
+            $this->logErr("setnx:" . $ret . "(值已存在)");
         }
-        $this->logErr($ret);
         return false;
     }
 
@@ -385,7 +386,7 @@ class CRedisUtil {
         if ($ret == "PONG") {
             return true;
         }
-        $this->logErr($ret);
+        $this->logErr("ping:" . $ret);
         return false;
     }
 
@@ -397,7 +398,7 @@ class CRedisUtil {
     static private function json_encode_arr($values) {
         $arr = array();
         if (is_array($values)) {
-            $arr = array_map(function($v) {
+            $arr = array_map(function ($v) {
                 return JsonUtil::encode($v);
             }, $values);
         } else {
@@ -414,7 +415,7 @@ class CRedisUtil {
     static private function json_decode_arr(array $values) {
         $arr = array();
         if (is_array($values)) {
-            $arr = array_map(function($v) {
+            $arr = array_map(function ($v) {
                 return JsonUtil::decode($v);
             }, $values);
         } else {
@@ -1023,7 +1024,7 @@ class CRedisUtil {
     }
 
     /**
-     * 
+     *
      * 有序列表 - 获取指定积分区间内的成员
      * @param string $key
      * @param int/float $min
@@ -1052,7 +1053,7 @@ class CRedisUtil {
     }
 
     /**
-     * 
+     *
      * 有序列表 - 获取按照倒序排序后指定积分区间内的成员
      * @param string $key
      * @param int/float $max
@@ -1158,12 +1159,13 @@ class CRedisUtil {
 // </editor-fold>
 //
 // <editor-fold defaultstate="collapsed" desc="    其他api    ">
-// 
+//
+
     /**
      * 重命名一个key(注意: 与move的区别, move是将数据迁移到其他db,rename相当于在当前db内move)
      * @param type $key
      * @param type $newkey
-     * @return boolean 
+     * @return boolean
      */
     public function rename($key, $newkey) {
         self::debug();

+ 2 - 1
Gameserver/Amfphp/util/volcengine/VolcUtil.php

@@ -26,7 +26,8 @@ class VolcUtil {
         );
         $zoneid = req()->zoneid;
         $uid = req()->uid;
-        gMem()->add(MemKey_User::stat_volc_headers($zoneid, $uid), $headers);
+        $key = MemKey_User::stat_volc_headers($zoneid, $uid);
+        gMem()->set($key, $headers);
     }
 
     private static function Headers() {