Bläddra i källkod

日志功能小改进

王刚 3 år sedan
förälder
incheckning
76e925149c

+ 18 - 23
Gameserver/Amfphp/util/CLog.php

@@ -166,7 +166,7 @@ class CLog {
         $arr = self::$$typename;                                                # 取对应类型的数组
         if (count($arr) > 0) {
             if (null != req()) {
-                $arr[] = "" . req();
+                array_unshift($arr, date('Y-m-d H:i:s') . " 请求: " . req());    # 如果请求不为空, 附加下本次请求参数.
             }
             gMem()->lpush($key, $arr);
             if (gMem()->llen($key) > self::redis_log_trim_max + self::redis_log_trim_once) {# 达到清理条件
@@ -223,13 +223,14 @@ class CLog {
         $server_addr = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : "-";
         $client_addr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : "-";
         $uid = empty(req()->uid) ? "-" : req()->uid;
-        $str = "[" . $server_addr . "][$zoneid 区][" . $uid . "]"                          # 请求主机ip地址、分区, uid
-                . "[" . date('Y-m-d H:i:s') . "][" . $client_addr . "]["                   # 时间, 客户端来源ip地址
+        $str = "[" . date('Y-m-d H:i:s') . "][" . PHP_VERSION . "][" . $server_addr . "]<" . $client_addr . ">"  # 时间,PHP_ver,主机地址, 客户端来源ip地址 
+                . "[$zoneid 区][$uid]"            #                                        #玩家所在分区, uid
                 . (isset($row['file']) ? CommUtil::str2UTF8(basename($row['file'])) : '-') # 所在文件名
                 . ":" . (isset($row['line']) ? $row['line'] : "???")#                      # 所在行
                 . "]" . (isset($tag) ? "[" . CommUtil::str2UTF8($tag) . "]" : "")          # 标签
                 . "=> " . var_export($msg, true)#                                          # 内容
                 . PHP_EOL;
+
         return $str;
     }
 
@@ -284,26 +285,6 @@ class CLog {
         }
     }
 
-// </editor-fold>
-//
-// 避免异常导致缓存丢失, 付费模块的日志直接写入文件
-// <editor-fold defaultstate="collapsed" desc=" 付费相关日志, 无缓存 ">
-
-    /**
-     * 输出日志 到pay.log
-     * @param mixed $msg 参数是字符串则直接输出,否则调用json_encode
-     */
-    public static function pay($msg) {
-        $str = self::makeLogMsg($msg);                                          # 统一日志格式字符串
-        self::Paylog2Mysql($str);
-//        if (GAME_ONLINE) {
-//            self::Paylog2Mysql($str);
-//        } else {
-//            $fileName = self::GetDir() . "pay" . date('Ym') . ".log";
-//            self::Log2File($fileName, $str);
-//        }
-    }
-
     /**
      * 向文件写入日志
      * @global int $zoneid
@@ -319,6 +300,20 @@ class CLog {
         fclose($fd);                                                            # 关闭文件
     }
 
+// </editor-fold>
+//
+// 避免异常导致缓存丢失, 付费模块的日志直接写入文件
+// <editor-fold defaultstate="collapsed" desc=" 付费相关日志, 无缓存 ">
+
+    /**
+     * 输出日志 到pay.log
+     * @param mixed $msg 参数是字符串则直接输出,否则调用json_encode
+     */
+    public static function pay($msg) {
+        $str = self::makeLogMsg($msg);                                          # 统一日志格式字符串
+        self::Paylog2Mysql($str);
+    }
+
     /**
      * 将pay日志写入mysql
      * @param type $msg

+ 8 - 5
Gameserver/Amfphp/util/ErrHandler.php

@@ -22,8 +22,11 @@ class ErrHandler {
     static function error_handler($errno, $errstr, $errfile, $errline) {
         $msg = CommUtil::str2UTF8($errstr) . " in " . CommUtil::str2UTF8($errfile) . ":" . $errline;
         CLog::err($msg . PHP_EOL . DebugHelper::get_call_stack(10), 'Error Handler:');
-        CLog::flush();                                                          # 最后再将快速日志刷到文件
-        return TRUE;                                                            # 不再继续错误处理的冒泡过程
+        return TRUE;                                                            # 不再继续错误处理的冒泡过程::则代码得以继续执行
+//        if ($errno == E_USER_ERROR && !(php_sapi_name() === 'cli')) {           # 如果是用户自定义错误,直接返回resp, 这种情况的话,可以刷下数据
+//            CLog::flush();                                                      # 最后再将快速日志刷到文件
+//            Err($errno);                                                        # 直接返回错误响应
+//        }
     }
 
     /**
@@ -35,9 +38,9 @@ class ErrHandler {
             $msg = CommUtil::str2UTF8(var_export($lasterror, true));
             CLog::err($msg, 'Shutdown Handler:');
         } else {
-//            CLog::err("just normal exiting", 'Shutdown Handler:');
+//            CLog::err("just normal exiting", 'Shutdown Handler:');            # 正常结束运行
         }
-        CLog::flush();                                                          # 最后再将快速日志刷到文件
+        CLog::flush();                                                          # 最后再将快速日志刷到文件(如果有数据的话)
     }
 
     /**
@@ -49,7 +52,7 @@ class ErrHandler {
                 . '  in ' . CommUtil::str2UTF8($exception->getFile())
                 . ":" . $exception->getLine();
         CLog::err($msg . PHP_EOL . DebugHelper::get_call_stack(10), 'Exception Handler:');
-        CLog::flush();                                                          # 最后再将快速日志刷到文件
+        CLog::flush();                                                          # 最后再将快速日志刷到文件,因为后续逻辑执行就中断了
     }
 
     /**

+ 15 - 0
Gameserver/Amfphp/util/HttpUtil.php

@@ -169,6 +169,21 @@ class HttpUtil {
         }
     }
 
+    /**
+     * 测试是否支持tls1.2
+     * @return bool true:支持, false:不支持
+     */
+    public static function CanSurpotTls_1_2() {
+        $target_url = 'https://www.baidu.com/';                                 # 测试地址  
+
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $target_url);
+        curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+        return curl_exec($ch) !== false;                                        # 响应结果不为false则支持
+    }
+
     /**
      * 获取客户端ip地址及端口
      * @return ip:port

+ 8 - 7
Gameserver/Amfphp/util/SelfChecker.php

@@ -23,13 +23,14 @@ class SelfChecker {
      */
     public static function checkModules($arr = array()) {
         $default = array(#                                                      # 必备基础模块
-            "curl",
-            "mbstring",
-            "mongodb",
-            "openssl",
-            "pdo_mysql",
-            "sockets",
-            "zlib",
+            "curl", #                                                           # 服务器间http请求
+            "mbstring", #                                                       # 设计到utf-8多语言支持
+            "mongodb", #                                                        # mongodb支持 
+            "openssl", #                                                        # 用于通讯时的加密、验签;
+            "pdo_mysql", #                                                      # mysql
+            "shmop", #                                                          # 九游SDK代码中用到,共享内存操作,还没怎么玩儿过
+            "sockets", #                                                        # 用于服务器间通讯
+            "zlib", #                                                           # 压缩库
         );
         $r_modules = array_merge($default, $arr);                               # 合并指定模块
         $diff = array_diff($r_modules, get_loaded_extensions());                # 判断缺失模块