value对到目标CMEM * @author gwang */ class kvflush { public static function flush() { InitZoneId(); # 初始化分区信息 Ps. $_REQUEST["zoneid"] $params = HttpUtil::getQueryParas(); $key = CommUtil::zb64decode(urldecode($params["key"])); $val = CommUtil::zb64decode(urldecode($params["val"])); $user = urldecode($params["user"]); $type = urldecode($params['type']); $keypath = ROOTDIR . "/util/key"; $myrsa = new MyRsa($keypath); $sign = urldecode($params['sign']); if (!$myrsa->verify_arr($params, $sign)) { # 验证下签名 echo "签名验证失败!"; } else { CLog::info($key . " " . $val, "刷数据"); switch ($type) { case 'hash': $val = json_decode($val); # 需要还原为Obj才能解开 $ret = self::FlushToMem_hmSet($key, $val); self::FlushToFile_hash($key, $val); break; case 'normal': $ret = self::FlushToMem_set($key, $val); self::FlushToFile_str($key, $val); break; default : $ret = self::FlushToMem_set($key, $val); break; } if ($ret) { echo "success"; self::log($user, $key); # 记录日志 } else { echo "[$key] flush to mem failed!"; } } unset($myrsa); } //put your code here static function log($user, $modelname) { $who = $user . '_' . HttpUtil::clientIP(); $key = "log-flush"; // CLog::warn($who . "flushing [$modelname]", __CLASS__); # 写文件 $mem = gMem(); $ret = $mem->hset($key, $who, TimeUtil::tsYmdHis()); # 写入mem $mem->close(); return $ret; } /** * 普通写入方法 * @param string $key * @param mixed $value * @return boolean */ public static function FlushToMem_set($key, $value) { $mem = gMem(); $mem->delete($key); $ret = $mem->set($key, $value); # 写入mem $mem->close(); return $ret; } /** * 写入哈希表 * @param string $key * @param obj/assoc_arr $assoc_array * @return type */ public static function FlushToMem_hmSet($key, $assoc_array) { $mem = gMem(); if (!is_array($assoc_array)) { if (is_object($assoc_array)) { $assoc_arr = array(); foreach ($assoc_array as $k => $v) { # 组合成符合hmset的关联数组 $assoc_arr[$k] = JsonUtil::encode($v); } $assoc_array = $assoc_arr; } else { return false; } } $ret = TRUE; if (count($assoc_arr) > 0) { $mem->delete($key); $ret = $mem->hmset($key, $assoc_array); # 写入 } $mem->close(); return $ret; } private static function getFolder() { if (defined('CodeGen_Folder')) { if (!dir(CodeGen_Folder)) { if (mkdir(CodeGen_Folder)) { return CodeGen_Folder; } } else { return CodeGen_Folder; } } return ROOTDIR . '/configs/data/'; } private static function writePHPFile($key, $value) { if (defined('CodeGen_Enabled') && CodeGen_Enabled) { # (部署环境)是否允许代码生成 $file = fopen(self::getFolder() . $key . ".php", 'w'); $str = "