浏览代码

代码清理

gwang 4 年之前
父节点
当前提交
979ca52732

+ 1 - 1
Gameserver/Amfphp/base/Include.php

@@ -12,6 +12,6 @@ if (!defined("VO_ROOT")) {
     include_once VO_ROOT . '/Resp.php';
     include_once VO_ROOT . '/MemKey_User.php';
     include_once VO_ROOT . '/MemKey_GameRun.php';
-    include_once VO_ROOT . '/MemKey_Guild.php';
+//    include_once VO_ROOT . '/MemKey_Guild.php';
     include_once VO_ROOT . '/HashSaver.php';
 }

+ 0 - 125
Gameserver/Amfphp/base/MemKey_Guild.php

@@ -1,125 +0,0 @@
-<?php
-
-namespace loyalsoft;
-
-//
-///**
-// * Description of MemKey_Guild
-// *
-// * @author cyzhao
-// */
-//class MemKey_Guild {
-//
-////
-//// <editor-fold defaultstate="collapsed" desc="    辅助方法  ">
-////
-//    /**
-//     * @return bool 是否使用短名称
-//     */
-//    private static function bUseShort() {
-////        return true;  # 全部启用
-//        return defined('GAME_ONLINE') and GAME_ONLINE;
-//    }
-//
-//    /**
-//     * key前缀
-//     * @param int $zoneid 分区id
-//     * @param string $uid
-//     * @return string
-//     */
-//    private static function Key_($zoneid, $uid) {
-//        return self::bUseShort() ? 'u-' . $uid . '-' . $zoneid : 'user-' . $uid . '-zone' . $zoneid;
-//    }
-//
-//// </editor-fold>
-//    /**
-//     * 获取玩家公会信息
-//     * @param type $zoneid
-//     * @return string
-//     */
-//    public static function getUserGuildInfo($uid, $zoneid) {
-//        return self::Key_($zoneid, $uid) . "-guild";
-//    }
-//
-//    /**
-//     * 公会列表缓存
-//     * @param type $page
-//     * @param type $zoneid
-//     * @return type
-//     */
-//    public static function guildListCache($page, $zoneid) {
-//        return "cache-guild-list" . "-zone" . $zoneid . $page;
-//    }
-//
-//    /**
-//     * 推荐公会列表缓存
-//     * @return string
-//     */
-//    static function guildRecommendationCache($zoneid) {
-//        return "cache-guild-recommendation" . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     *  推荐公会队列
-//     * @return string
-//     */
-//    static function constGuildRecommendationQueue($zoneid) {
-//        return "guild-recommendation-queue" . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     * 获取公会信息
-//     */
-//    static function getGuildInfo($gid, $zoneid) {
-//        return "guild-" . $gid . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     * 创建公会ID时使用的锁
-//     * 代码在同一个方法中执行添加和删除key值的操作 应该不用分区
-//     * @return string
-//     */
-//    static function constCreateGuildIDLock() {
-//        return "guild-lock-createid";
-//    }
-//
-//    /**
-//     * 获取当前最大公会ID,
-//     * @return string
-//     */
-//    static function constGetCurrentMaxGuildID($zoneid) {
-//        return "currentmaxguildid" . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     * 【哈希】捐献请求记录
-//     * @return string
-//     */
-//    static function CacheGuildDonate($guildId, $zoneid) {
-//        return "guild-donate-" . $guildId . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     * 【LIST】捐献者记录
-//     * @return string
-//     */
-//    static function UserDonateRecordList($guildId, $index, $zoneid) {
-//        return "guild-donor-" . $guildId . "-" . $index . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     * 【LIST】除了捐献之外的日志
-//     * @return string
-//     */
-//    static function constGuildJournal($guildId, $zoneid) {
-//        return "guild-journal-" . $guildId . "-zone" . $zoneid;
-//    }
-//
-//    /**
-//     * [hash]
-//     */
-//    static function constvsFightInvite($guildId, $zoneid) {
-//        return "guild-fightInvite-" . $guildId . "-zone" . $zoneid;
-//    }
-//
-//}

+ 15 - 13
Gameserver/Amfphp/base/MemKey_Stat.php

@@ -1,16 +1,18 @@
 <?php
-namespace loyalsoft;
-
-/**
- * 游戏统计数据
- * @version
- *          1.0.0 Created at 2017-4-6. by --gwang
- * @author gwang (mail@wanggangzero.cn)
- * @copyright ? 2017-4-6, SJZ LoyalSoft Corporation & gwang. All rights reserved.
- */
-
-class MemKey_Stat{
-
 
+namespace loyalsoft;
 
-}
+//
+///**
+// * 游戏统计数据
+// * @version
+// *          1.0.0 Created at 2017-4-6. by --gwang
+// * @author gwang (mail@wanggangzero.cn)
+// * @copyright ? 2017-4-6, SJZ LoyalSoft Corporation & gwang. All rights reserved.
+// */
+//
+//class MemKey_Stat{
+//
+//
+//
+//}

+ 2 - 2
Gameserver/Amfphp/process/PayProc.php

@@ -428,7 +428,7 @@ class PayProc {
         $user->userSecretshop = $userSecretshop;
         $req->userInfo->game = $user;
         UserProc::updateUserInfo();                                         # 回写数据
-        StatProc::secretShopbuy($req->zoneid, $req->uid, $itemId, $num);        # 统计/监控数据
+//        StatProc::secretShopbuy($req->zoneid, $req->uid, $itemId, $num);        # 统计/监控数据
         return Resp::ok(array(#                                                 # 成功后将最新的玩家数据返回给客户端
                     'gold' => $user->baseInfo->gold,
                     'tili' => $user->baseInfo->tili,
@@ -512,7 +512,7 @@ class PayProc {
                 return Resp::err($err);
             }
             UserProc::updateUserInfo();                                     # 回写数据
-            StatProc::shopbuy($zoneid, $uid, $itemId, $num);                    # 统计/监控数据
+//            StatProc::shopbuy($zoneid, $uid, $itemId, $num);                    # 统计/监控数据
             return Resp::ok(array(#                                             # 成功后将最新的玩家数据返回给客户端
                         'gold' => $user->baseInfo->gold,
                         'tili' => $user->baseInfo->tili,

+ 319 - 318
Gameserver/Amfphp/process/StatProc.php

@@ -2,322 +2,323 @@
 
 namespace loyalsoft;
 
-/**
- * 统计模块
- * 统计:反应的是一段时间内的趋势. 所以,所有数据都要依据时间进行分类. 其他的统计维度另算. -王刚
- * @version
- *          1.0.0 Created at 2016-5-24. by --gwang
- * @author gwang (mail@wanggangzero.cn)
- * @copyright © 2016-5-24, SJZ LoyalSoft Corporation & gwang. All rights reserved.
- */
-class StatProc {
-
-    public static function test($req) {
-        CLog::info("异步测试成功!", "Statproc::Test");
-        DebugHelper::var_dump("异步调用");
-        return $req;
-    }
-
-    const maxLevel = 100;
-    const maxDays = 30;
-
-    /**
-     * 玩家登录
-     * @param type $level
-     */
-    public static function UserLogin($req, $isNew = 0) {
-        $redis = gMem();
-        $redis->hincrby(MemKey_Stat::UserLevel_hash(), $level);
-    }
-
-    /**
-     *  设置新手引导步骤
-     * @param int $tsBirth 玩家创建角色的时刻
-     * @param int $zoneid
-     * @param int $tarStep
-     * @param int $currentStep
-     */
-    public static function UserGuidStep($tsBirth, $zoneid, $tarStep, $currentStep) {
-        if ($tarStep == $currentStep) {
-            return;
-        }
-        $redis = gMem();
-
-        if ($tarStep == 0) {                                                    #  跳过新手引导
-            $redis->hincrby(MemKey_Stat::UserGuidSkip_Day($tsBirth, $zoneid), $currentStep);
-            $redis->hincrby(MemKey_Stat::UserGuidSkip_Week($tsBirth, $zoneid), $currentStep);
-            $redis->hincrby(MemKey_Stat::UserGuidSkip_Month($tsBirth, $zoneid), $currentStep);
-        } else {
-            $redis->hincrby(MemKey_Stat::UserGuidLose_Day($tsBirth, $zoneid), $tarStep);
-            $redis->hincrby(MemKey_Stat::UserGuidLose_Week($tsBirth, $zoneid), $tarStep);
-            $redis->hincrby(MemKey_Stat::UserGuidLose_Month($tsBirth, $zoneid), $tarStep);
-        }
-    }
-
-    /**
-     * 任务步骤
-     * @param int $tsBirth
-     * @param int $level
-     * @param int $completeStep
-     */
-    public static function TaskStep($tsBirth, $level, $completeStep) {
-        $redis = gMem();
-        $redis->zincrby(MemKey_Stat::TaskStep_zset(), $completeStep);
-        $redis->zincrby(MemKey_Stat::TaskStep_Day_zset($tsBirth), $completeStep);
-        $redis->zincrby(MemKey_Stat::TaskStep_level_zset($level), $completeStep);
-    }
-
-    /**
-     * 首次充值
-     * @param string $uid 玩家ID
-     * @param int $tsBirth
-     * @param int $level
-     * @param int $amt 充值金额单位0.1元
-     */
-    public static function Pay($uid, $tsBirth, $level, $amt) {
-        if ($amt <= 0) {
-            return;
-        }
-        $redis = gMem();
-        $day = CommUtil::tsDay() - CommUtil::tsDay($tsBirth);
-        $day = $day > self::maxDays ? self::maxDays : $day;                     # 超过30天的合并到30天
-        if ($redis->sismember(MemKey_Stat::PayedUsers(), $uid)) {
-//            # 充值统计这边暂空,还没设计好需求
-        } else {                                                                # 首充
-            $redis->zincrby(MemKey_Stat::FirstPay_level_zset(), $level);        # 首次充值等级
-            $redis->zincrby(MemKey_Stat::FirstPay_day_zset(), $day);            # 首次充值的游戏时间
-            $redis->sadd($uid, $uid);
-        }
-        usleep(1);                                                              # 延时1微秒
-    }
-
-    /**
-     * 统计 - 商城购买
-     * @param string $zoneid
-     * @param string $uid   玩家ID
-     * @param int $itemid   道具编号
-     * @param int $amt      数量
-     */
-    public static function shopbuy($zoneid, $uid, $itemid, $amt = 1) {
-        if ($amt <= 0) {
-            return;
-        }
-        $redis = gMem();
-        # 全局
-        $redis->zincrby(MemKey_GameRun::stat_daily_ShopSales_zset($zoneid, TimeUtil::dtToday()), $itemid, $amt);
-        $redis->zincrby(MemKey_GameRun::stat_weekly_ShopSales_zset($zoneid, TimeUtil::tsWeek()), $itemid, $amt);
-        $redis->zincrby(MemKey_GameRun::stat_monthly_ShopSales_zset($zoneid, date('Ym')), $itemid, $amt);
-        $redis->lpush(MemKey_GameRun::log_ShopSales_list($zoneid), "[" . TimeUtil::dtCurrent() . "] $uid,$itemid,$amt");
-        $redis->ltrim(MemKey_GameRun::log_ShopSales_list($zoneid), 0, 1000);    # 系统销售日志保留1k条
-        # 玩家
-        $redis->zincrby(MemKey_User::stat_Shopbuy_zset($zoneid, $uid), $itemid, $amt);
-        $redis->lpush(MemKey_User::log_shopbuy_list($zoneid, $uid), "[" . TimeUtil::dtCurrent() . "] $itemid,$amt");
-        $redis->ltrim(MemKey_User::log_shopbuy_list($zoneid, $uid), 0, 30);     # 保持最新的30条记录
-        usleep(1);                                                              # 延时1微秒
-    }
-
-    /**
-     * 统计 - 神秘商城购买
-     * @param type $zoneid
-     * @param type $uid
-     * @param type $itemid
-     * @param type $amt
-     */
-    public static function secretShopbuy($zoneid, $uid, $itemid, $amt = 1) {
-        if ($amt <= 0) {
-            return;
-        }
-        $redis = gMem();
-        # 全局
-        $redis->zincrby(MemKey_GameRun::stat_daily_secretshopSales_zset($zoneid, TimeUtil::dtToday()), $itemid, $amt);
-        $redis->zincrby(MemKey_GameRun::stat_weekly_secretshopSalse_zset($zoneid, TimeUtil::tsWeek()), $itemid, $amt);
-        $redis->zincrby(MemKey_GameRun::stat_monthly_secretshopSales_zset($zoneid, date('Ym')), $itemid, $amt);
-        $redis->lpush(MemKey_GameRun::log_secretshopSales_list($zoneid), "[" . TimeUtil::dtCurrent() . "] $uid,$itemid,$amt");
-        $redis->ltrim(MemKey_GameRun::log_secretshopSales_list($zoneid), 0, 1000);  # 系统销售日志保留1k条
-        # 玩家
-        $redis->zincrby(MemKey_User::stat_SecretShopBuy_zset($zoneid, $uid), $itemid, $amt);
-        $redis->lpush(MemKey_User::log_secretshopbuy_list($zoneid, $uid), #         # 玩家个人日志
-                "[" . TimeUtil::dtCurrent() . "] $itemid,$amt");
-        $redis->ltrim(MemKey_User::log_secretshopbuy_list($zoneid, $uid), 0, 30);   # 保持最新的30条记录
-        usleep(1);
-    }
-
-// == == == == == == == == == == == == == ==
-// 提供查询功能
-// == == == == == == == == == == == == == ==
-
-    /**
-     *
-     * @param StatRequest $req
-     * @return type
-     */
-    public static function GetDataOfTask($req) {
-        $redis = gMem();
-        $maxTaskStep = 1000;                                                    # 暂时不高于1000
-        switch ($req->dateType) {                                               # 参数处理
-            case 'none':
-                $data = $redis->zrevrange(MemKey_Stat::TaskStep_zset(), 0, $maxTaskStep, true);
-                break;
-            case 'Day':
-                $ts = ($req->dateIndex > 30 ? 30 : $req->dateIndex) * 86400;
-                $data = $redis->zrevrange(MemKey_Stat::TaskStep_Day_zset(CommUtil::tsCurrent(-$ts)), 0, self::maxDays, true);
-                break;
-            case 'level':
-                $data = $redis->zrevrange(MemKey_Stat::TaskStep_level_zset($req->dateIndex), 0, self::maxLevel, true);
-                break;
-            default :
-                break;
-        }
-        $keys = array_keys($data);
-        sort($keys);
-        return array(
-            'labels' => $keys,
-            'datasets' => array(
-                array('label' => '完成人数',
-                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
-                    'data' => array_values(StlUtil::arraySortByKey($data))
-                )
-            )
-        );
-    }
-
-    /**
-     *
-     * @param StatRequest $req
-     * @return type
-     */
-    public static function GetUserGuideData($req) {
-        $redis = gMem();
-        $date = date_create_from_format("Ymd", $req->dateIndex);                # 参数处理
-        $ts = $date->getTimestamp();
-        $zoneid = $req->zoneid;
 //
-        $skip = $redis->hgetall(MemKey_Stat::UserGuidSkip_Day($ts, $zoneid));
-        $lose = $redis->hgetall(MemKey_Stat::UserGuidLose_Day($ts, $zoneid));
-
-        switch ($req->dateType) {
-            case 'Week':
-                $skip = $redis->hgetall(MemKey_Stat::UserGuidSkip_Week($ts, $zoneid));
-                $lose = $redis->hgetall(MemKey_Stat::UserGuidLose_Week($ts, $zoneid));
-                break;
-            case 'Month':
-                $skip = $redis->hgetall(MemKey_Stat::UserGuidSkip_Month($ts, $zoneid));
-                $lose = $redis->hgetall(MemKey_Stat::UserGuidLose_Month($ts, $zoneid));
-                break;
-            case 'Day':
-            default:
-                break;
-        }
-        $keys = array_keys($lose);
-        foreach ($keys as $k) {
-            if ($k && !isset($skip[$k])) {
-                $skip[$k] = "0";
-            }
-        }
-
-        sort($keys);
-        return array(
-            'labels' => $keys,
-            'datasets' => array(
-                array('label' => '完成人数',
-                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
-                    'data' => array_values(StlUtil::arraySortByKey($lose))
-                ),
-                array('label' => '跳过人数',
-                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
-                    'borderColor' => 'rgb(0, 0, 255)',
-                    'data' => array_values(StlUtil::arraySortByKey($skip))
-                ),
-            )
-        );
-    }
-
-    /**
-     * 付费相关统计
-     * @param StatRequest $req
-     */
-    public static function GetPayStatData($req) {
-        $redis = gMem();
-// 参数处理
-        $payedusers = $redis->scard(MemKey_Stat::PayedUsers());                 # 充值总人数
-        $label = '';
-        switch ($req->dateType) {
-            case 'FirstPayDay':
-                $data = $redis->zrange(MemKey_Stat::FirstPay_day_zset(), 0, self::maxDays, true);
-                $label = '消费人数';
-                break;
-            case 'FirstPayLevel':
-                $data = $redis->zrange(MemKey_Stat::FirstPay_level_zset(), 0, self::maxLevel, true);
-                $label = '充值人数';
-                break;
-            case 'FirstYuanbaoPayAt':
-                $data = $redis->zrange(MemKey_Stat::YuanbaoFirstUsed_zset(), 0, -1, true); # 最多也不过5、6中可能流向
-                $label = '消费人数';
-                break;
-            default :
-
-                break;
-        }
-        $keys = array_keys($data);
-        sort($keys);
-        return array(
-            'labels' => $keys,
-            'datasets' => array(
-                array('label' => $label,
-                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
-                    'data' => array_values(StlUtil::arraySortByKey($data))
-                )
-            )
-        );
-    }
-
-    /**
-     * 玩家流失等级
-     * @param type $req
-     * @return type
-     */
-    public static function GetUserLevels($req) {
-        $redis = gMem();
-        $data = $redis->hgetall(MemKey_Stat::UserLevel_hash());
-        $keys = array_keys($data);
-        sort($keys);
-        return array(
-            'labels' => $keys,
-            'datasets' => array(
-                array('label' => '到达该等级的人数',
-                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
-                    'data' => array_values(StlUtil::arraySortByKey($data))
-                )
-            )
-        );
-    }
-
-}
-
-/**
- * 统计类型
- */
-class StatClass {
-
-// 新手引导
-    const UserGuide = 1;
-// 任务步骤
-    const TaskStep = 2;
-// 流失等级
-    const LoseLevel = 3;
-// 生存天数
-    const LiveDays = 4;
-    // 付费相关统计
-    const PayStat = 5;
-
-}
-
-class StatRequest {
-
-    public $statType;
-    public $dateType;
-    public $dateIndex;
-    public $zoneid;
-    public $level;
-
-}
+///**
+// * 统计模块
+// * 统计:反应的是一段时间内的趋势. 所以,所有数据都要依据时间进行分类. 其他的统计维度另算. -王刚
+// * @version
+// *          1.0.0 Created at 2016-5-24. by --gwang
+// * @author gwang (mail@wanggangzero.cn)
+// * @copyright © 2016-5-24, SJZ LoyalSoft Corporation & gwang. All rights reserved.
+// */
+//class StatProc {
+//
+//    public static function test($req) {
+//        CLog::info("异步测试成功!", "Statproc::Test");
+//        DebugHelper::var_dump("异步调用");
+//        return $req;
+//    }
+//
+//    const maxLevel = 100;
+//    const maxDays = 30;
+//
+//    /**
+//     * 玩家登录
+//     * @param type $level
+//     */
+//    public static function UserLogin($req, $isNew = 0) {
+//        $redis = gMem();
+//        $redis->hincrby(MemKey_Stat::UserLevel_hash(), $level);
+//    }
+//
+//    /**
+//     *  设置新手引导步骤
+//     * @param int $tsBirth 玩家创建角色的时刻
+//     * @param int $zoneid
+//     * @param int $tarStep
+//     * @param int $currentStep
+//     */
+//    public static function UserGuidStep($tsBirth, $zoneid, $tarStep, $currentStep) {
+//        if ($tarStep == $currentStep) {
+//            return;
+//        }
+//        $redis = gMem();
+//
+//        if ($tarStep == 0) {                                                    #  跳过新手引导
+//            $redis->hincrby(MemKey_Stat::UserGuidSkip_Day($tsBirth, $zoneid), $currentStep);
+//            $redis->hincrby(MemKey_Stat::UserGuidSkip_Week($tsBirth, $zoneid), $currentStep);
+//            $redis->hincrby(MemKey_Stat::UserGuidSkip_Month($tsBirth, $zoneid), $currentStep);
+//        } else {
+//            $redis->hincrby(MemKey_Stat::UserGuidLose_Day($tsBirth, $zoneid), $tarStep);
+//            $redis->hincrby(MemKey_Stat::UserGuidLose_Week($tsBirth, $zoneid), $tarStep);
+//            $redis->hincrby(MemKey_Stat::UserGuidLose_Month($tsBirth, $zoneid), $tarStep);
+//        }
+//    }
+//
+//    /**
+//     * 任务步骤
+//     * @param int $tsBirth
+//     * @param int $level
+//     * @param int $completeStep
+//     */
+//    public static function TaskStep($tsBirth, $level, $completeStep) {
+//        $redis = gMem();
+//        $redis->zincrby(MemKey_Stat::TaskStep_zset(), $completeStep);
+//        $redis->zincrby(MemKey_Stat::TaskStep_Day_zset($tsBirth), $completeStep);
+//        $redis->zincrby(MemKey_Stat::TaskStep_level_zset($level), $completeStep);
+//    }
+//
+//    /**
+//     * 首次充值
+//     * @param string $uid 玩家ID
+//     * @param int $tsBirth
+//     * @param int $level
+//     * @param int $amt 充值金额单位0.1元
+//     */
+//    public static function Pay($uid, $tsBirth, $level, $amt) {
+//        if ($amt <= 0) {
+//            return;
+//        }
+//        $redis = gMem();
+//        $day = CommUtil::tsDay() - CommUtil::tsDay($tsBirth);
+//        $day = $day > self::maxDays ? self::maxDays : $day;                     # 超过30天的合并到30天
+//        if ($redis->sismember(MemKey_Stat::PayedUsers(), $uid)) {
+////            # 充值统计这边暂空,还没设计好需求
+//        } else {                                                                # 首充
+//            $redis->zincrby(MemKey_Stat::FirstPay_level_zset(), $level);        # 首次充值等级
+//            $redis->zincrby(MemKey_Stat::FirstPay_day_zset(), $day);            # 首次充值的游戏时间
+//            $redis->sadd($uid, $uid);
+//        }
+//        usleep(1);                                                              # 延时1微秒
+//    }
+//
+//    /**
+//     * 统计 - 商城购买
+//     * @param string $zoneid
+//     * @param string $uid   玩家ID
+//     * @param int $itemid   道具编号
+//     * @param int $amt      数量
+//     */
+//    public static function shopbuy($zoneid, $uid, $itemid, $amt = 1) {
+//        if ($amt <= 0) {
+//            return;
+//        }
+//        $redis = gMem();
+//        # 全局
+//        $redis->zincrby(MemKey_GameRun::stat_daily_ShopSales_zset($zoneid, TimeUtil::dtToday()), $itemid, $amt);
+//        $redis->zincrby(MemKey_GameRun::stat_weekly_ShopSales_zset($zoneid, TimeUtil::tsWeek()), $itemid, $amt);
+//        $redis->zincrby(MemKey_GameRun::stat_monthly_ShopSales_zset($zoneid, date('Ym')), $itemid, $amt);
+//        $redis->lpush(MemKey_GameRun::log_ShopSales_list($zoneid), "[" . TimeUtil::dtCurrent() . "] $uid,$itemid,$amt");
+//        $redis->ltrim(MemKey_GameRun::log_ShopSales_list($zoneid), 0, 1000);    # 系统销售日志保留1k条
+//        # 玩家
+//        $redis->zincrby(MemKey_User::stat_Shopbuy_zset($zoneid, $uid), $itemid, $amt);
+//        $redis->lpush(MemKey_User::log_shopbuy_list($zoneid, $uid), "[" . TimeUtil::dtCurrent() . "] $itemid,$amt");
+//        $redis->ltrim(MemKey_User::log_shopbuy_list($zoneid, $uid), 0, 30);     # 保持最新的30条记录
+//        usleep(1);                                                              # 延时1微秒
+//    }
+//
+//    /**
+//     * 统计 - 神秘商城购买
+//     * @param type $zoneid
+//     * @param type $uid
+//     * @param type $itemid
+//     * @param type $amt
+//     */
+//    public static function secretShopbuy($zoneid, $uid, $itemid, $amt = 1) {
+//        if ($amt <= 0) {
+//            return;
+//        }
+//        $redis = gMem();
+//        # 全局
+//        $redis->zincrby(MemKey_GameRun::stat_daily_secretshopSales_zset($zoneid, TimeUtil::dtToday()), $itemid, $amt);
+//        $redis->zincrby(MemKey_GameRun::stat_weekly_secretshopSalse_zset($zoneid, TimeUtil::tsWeek()), $itemid, $amt);
+//        $redis->zincrby(MemKey_GameRun::stat_monthly_secretshopSales_zset($zoneid, date('Ym')), $itemid, $amt);
+//        $redis->lpush(MemKey_GameRun::log_secretshopSales_list($zoneid), "[" . TimeUtil::dtCurrent() . "] $uid,$itemid,$amt");
+//        $redis->ltrim(MemKey_GameRun::log_secretshopSales_list($zoneid), 0, 1000);  # 系统销售日志保留1k条
+//        # 玩家
+//        $redis->zincrby(MemKey_User::stat_SecretShopBuy_zset($zoneid, $uid), $itemid, $amt);
+//        $redis->lpush(MemKey_User::log_secretshopbuy_list($zoneid, $uid), #         # 玩家个人日志
+//                "[" . TimeUtil::dtCurrent() . "] $itemid,$amt");
+//        $redis->ltrim(MemKey_User::log_secretshopbuy_list($zoneid, $uid), 0, 30);   # 保持最新的30条记录
+//        usleep(1);
+//    }
+//
+//// == == == == == == == == == == == == == ==
+//// 提供查询功能
+//// == == == == == == == == == == == == == ==
+//
+//    /**
+//     *
+//     * @param StatRequest $req
+//     * @return type
+//     */
+//    public static function GetDataOfTask($req) {
+//        $redis = gMem();
+//        $maxTaskStep = 1000;                                                    # 暂时不高于1000
+//        switch ($req->dateType) {                                               # 参数处理
+//            case 'none':
+//                $data = $redis->zrevrange(MemKey_Stat::TaskStep_zset(), 0, $maxTaskStep, true);
+//                break;
+//            case 'Day':
+//                $ts = ($req->dateIndex > 30 ? 30 : $req->dateIndex) * 86400;
+//                $data = $redis->zrevrange(MemKey_Stat::TaskStep_Day_zset(CommUtil::tsCurrent(-$ts)), 0, self::maxDays, true);
+//                break;
+//            case 'level':
+//                $data = $redis->zrevrange(MemKey_Stat::TaskStep_level_zset($req->dateIndex), 0, self::maxLevel, true);
+//                break;
+//            default :
+//                break;
+//        }
+//        $keys = array_keys($data);
+//        sort($keys);
+//        return array(
+//            'labels' => $keys,
+//            'datasets' => array(
+//                array('label' => '完成人数',
+//                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
+//                    'data' => array_values(StlUtil::arraySortByKey($data))
+//                )
+//            )
+//        );
+//    }
+//
+//    /**
+//     *
+//     * @param StatRequest $req
+//     * @return type
+//     */
+//    public static function GetUserGuideData($req) {
+//        $redis = gMem();
+//        $date = date_create_from_format("Ymd", $req->dateIndex);                # 参数处理
+//        $ts = $date->getTimestamp();
+//        $zoneid = $req->zoneid;
+////
+//        $skip = $redis->hgetall(MemKey_Stat::UserGuidSkip_Day($ts, $zoneid));
+//        $lose = $redis->hgetall(MemKey_Stat::UserGuidLose_Day($ts, $zoneid));
+//
+//        switch ($req->dateType) {
+//            case 'Week':
+//                $skip = $redis->hgetall(MemKey_Stat::UserGuidSkip_Week($ts, $zoneid));
+//                $lose = $redis->hgetall(MemKey_Stat::UserGuidLose_Week($ts, $zoneid));
+//                break;
+//            case 'Month':
+//                $skip = $redis->hgetall(MemKey_Stat::UserGuidSkip_Month($ts, $zoneid));
+//                $lose = $redis->hgetall(MemKey_Stat::UserGuidLose_Month($ts, $zoneid));
+//                break;
+//            case 'Day':
+//            default:
+//                break;
+//        }
+//        $keys = array_keys($lose);
+//        foreach ($keys as $k) {
+//            if ($k && !isset($skip[$k])) {
+//                $skip[$k] = "0";
+//            }
+//        }
+//
+//        sort($keys);
+//        return array(
+//            'labels' => $keys,
+//            'datasets' => array(
+//                array('label' => '完成人数',
+//                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
+//                    'data' => array_values(StlUtil::arraySortByKey($lose))
+//                ),
+//                array('label' => '跳过人数',
+//                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
+//                    'borderColor' => 'rgb(0, 0, 255)',
+//                    'data' => array_values(StlUtil::arraySortByKey($skip))
+//                ),
+//            )
+//        );
+//    }
+//
+//    /**
+//     * 付费相关统计
+//     * @param StatRequest $req
+//     */
+//    public static function GetPayStatData($req) {
+//        $redis = gMem();
+//// 参数处理
+//        $payedusers = $redis->scard(MemKey_Stat::PayedUsers());                 # 充值总人数
+//        $label = '';
+//        switch ($req->dateType) {
+//            case 'FirstPayDay':
+//                $data = $redis->zrange(MemKey_Stat::FirstPay_day_zset(), 0, self::maxDays, true);
+//                $label = '消费人数';
+//                break;
+//            case 'FirstPayLevel':
+//                $data = $redis->zrange(MemKey_Stat::FirstPay_level_zset(), 0, self::maxLevel, true);
+//                $label = '充值人数';
+//                break;
+//            case 'FirstYuanbaoPayAt':
+//                $data = $redis->zrange(MemKey_Stat::YuanbaoFirstUsed_zset(), 0, -1, true); # 最多也不过5、6中可能流向
+//                $label = '消费人数';
+//                break;
+//            default :
+//
+//                break;
+//        }
+//        $keys = array_keys($data);
+//        sort($keys);
+//        return array(
+//            'labels' => $keys,
+//            'datasets' => array(
+//                array('label' => $label,
+//                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
+//                    'data' => array_values(StlUtil::arraySortByKey($data))
+//                )
+//            )
+//        );
+//    }
+//
+//    /**
+//     * 玩家流失等级
+//     * @param type $req
+//     * @return type
+//     */
+//    public static function GetUserLevels($req) {
+//        $redis = gMem();
+//        $data = $redis->hgetall(MemKey_Stat::UserLevel_hash());
+//        $keys = array_keys($data);
+//        sort($keys);
+//        return array(
+//            'labels' => $keys,
+//            'datasets' => array(
+//                array('label' => '到达该等级的人数',
+//                    'fillColor' => "rgba(220, 220, 220, 0.5)", 'strokeColor' => "rgba(220, 220, 220, 1)",
+//                    'data' => array_values(StlUtil::arraySortByKey($data))
+//                )
+//            )
+//        );
+//    }
+//
+//}
+//
+///**
+// * 统计类型
+// */
+//class StatClass {
+//
+//// 新手引导
+//    const UserGuide = 1;
+//// 任务步骤
+//    const TaskStep = 2;
+//// 流失等级
+//    const LoseLevel = 3;
+//// 生存天数
+//    const LiveDays = 4;
+//    // 付费相关统计
+//    const PayStat = 5;
+//
+//}
+//
+//class StatRequest {
+//
+//    public $statType;
+//    public $dateType;
+//    public $dateIndex;
+//    public $zoneid;
+//    public $level;
+//
+//}

+ 1 - 1
Gameserver/Amfphp/service_call/triggers/TriggerDumpLog2Sql.php

@@ -11,4 +11,4 @@ include_once __DIR__ . '/../Amfphp/main.php';
  * @author gwang (mail@wanggangzero.cn)
  * @copyright © 2016-7-3, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  */
-CLogUtil_HP::dump();                                                            # 执行转储命令
+//\loyalsoft\CLog::flush();                                                            # 执行转储命令