123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- namespace loyalsoft;
- DebugHelper::checkkPHPVersion("5.5.0"); # 检查PHP版本, yield关键字在5.5以后提供
- /**
- * Description of MemKeyList
- * 后台工具, 列出Mem中所有的keys.
- * @version
- * 1.0.0 Created at 2017-9-11. by --gwang
- * @author gwang (mail@wanggangzero.cn)
- * @copyright ? 2017-9-11, SJZ LoyalSoft Corporation & gwang. All rights reserved.
- */
- class MemKeyList {
- //put your code here
- public static function ItorAllKeys() {
- foreach (self::ItorRuntimeKeys() as $k) {
- echo $k . PHP_EOL;
- }
- foreach (self::ItorUserKeys() as $k) {
- echo $k . PHP_EOL;
- }
- }
- private static function ItorUserKeys() {
- $dao = daoInst();
- # 遍历玩家分区无关的keys
- $max = $dao->query("select count(distinct userID) from tab_rolename;");
- $page = intval($max / 100) + 1;
- for ($i = 0; $i < $page; $i++) {
- $sql = "select distinct userID from tab_rolename limit " . $i * 100 . ", 100;";
- $rows = $dao->query($sql)->fetchAll();
- foreach ($rows as $r) {
- foreach (self::ItorUserKeys_Union($r->userID) as $k) {
- yield $k;
- }
- }
- }
- # 按照分区遍历玩家keys
- foreach (GameConfig::zonelist() as $zoneid) {
- $max = $dao->query("select count(*) from tab_rolename where zoneid=$zoneid;");
- $page = intval($max / 100) + 1;
- $sql = "select * from tab_rolename where zoneid=$zoneid and tid between %d and %d;";
- for ($i = 0; $i < $page; $i++) {
- $rows = $dao->query(sprintf($sql, 0 + $i * 100, $i * 100 + 99))->fetchAll();
- foreach ($rows as $user) {
- $uid = $user->userID;
- foreach (self::ItorUserKeys_zoned($zoneid, $uid) as $k) {
- yield $k;
- }
- }
- }
- }
- }
- public static function ItorUserKeys_Union($uid) {
- yield MemKey_User::Union_PublicState_hash($uid);
- yield MemKey_User::Union_PlayedZoneInfo_normal($uid);
- }
- public static function ItorUserKeys_zoned($zoneid, $uid) {
- yield MemKey_User::Info_hash($zoneid, $uid);
- yield MemKey_User::Interact($zoneid, $uid);
- yield MemKey_User::Sig($zoneid, $uid);
- yield MemKey_User::Mail_CurId_int($zoneid, $uid);
- yield MemKey_User::Mail_Queue_hash($zoneid, $uid);
- yield MemKey_User::Mail_SysRecord_set($zoneid, $uid);
- yield MemKey_User::FriendsList_set($zoneid, $uid);
- yield MemKey_User::FriendsMsgQueue_hash($zoneid, $uid);
- yield MemKey_User::FriendsOps_hash($zoneid, $uid);
- yield MemKey_User::GiftOps($zoneid, $uid);
- if (PLAT == 'web') {
- yield MemKey_User::GiftStore($zoneid, $uid);
- yield MemKey_User::TokenInfo($zoneid, $uid);
- }
- yield MemKey_User::PayOrders($zoneid, $uid);
- yield MemKey_User::stat_LotteryRecords($zoneid, $uid);
- }
- private static function ItorRuntimeKeys() {
- foreach (GameConfig::hero() as $heroid => $hero) {
- foreach (self::ItorRuntimekeys_withHeroid($heroId) as $k) {
- yield $k;
- }
- }
- foreach (GameConfig::zonelist() as $zoneid => $zone) {
- foreach (self::ItorRuntimekeys_withZoneid($zoneid) as $k) {
- yield $k;
- }
- $startDay = tsDay($zone->publicTs);
- $tsday = tsDay();
- for ($i = $startDay; $i < $tsday; $i++) {
- foreach (self::ItorRuntimekeys_withZoneidAndtsDay($zoneid, $i) as $k) {
- yield $k;
- }
- }
- }
- }
- private static function ItorRuntimekeys_withHeroid($heroId) {
- yield MemKey_GameRun::HeroDiscusses_item_hash($heroId);
- yield MemKey_GameRun::HeroDiscusses_score_zset($heroId);
- yield MemKey_GameRun::HeroDiscusses_userScore_normal($heroId);
- }
- private static function ItorRuntimekeys_withZoneid($zoneid) {
- yield MemKey_GameRun::Game_FightPowerRank_zset($zoneid);
- // # 这里, pvp更早的数据还要不要? 运行时反正是只有最后两周的有用.
- yield MemKey_GameRun::Game_PVPScoreByZone_zset_curWeek($zoneid);
- yield MemKey_GameRun::Game_PVPScoreByZone_zset_lastWeek($zoneid);
- yield MemKey_GameRun::Game_SysMsgByZone_zset($zoneid);
- yield MemKey_GameRun::Stat_UserCountByZone_int($zoneid);
- }
- private static function ItorRuntimekeys_withZoneidAndtsDay($zoneid, $tsday) {
- yield MemKey_GameRun::Game_UserRecordByZone($zoneid, $tsday);
- }
- }
|