Exemplo n.º 1
0
 function actionSendSystemMsg()
 {
     //$uid = (int)self::getParam('uid');
     $userstr = self::getParam('uid');
     $sec = self::getParam('sec');
     $content = self::getParam('content');
     $desc = self::getParam('desc');
     $items = self::getParam('items');
     $ready_id = self::getParam('ready_id');
     foreach ((array) $items as $value) {
         $tag = $value['tag'];
         $num = intval($value['num']);
         if ($tag == 'gem' && $num > 100000) {
             echo "error, 元宝不能大于100000";
             exit;
         }
     }
     $key = uniqid();
     $msg = array('key' => $key, 'time' => app()->now, 'content' => $content, 'type' => 'system');
     if ($userstr != "all") {
         $uids = explode(',', $userstr);
         $itemmsg = "";
         foreach ($uids as $uid) {
             $uid = getApp()->getRealUid($uid, $sec);
             $sec = getApp()->getRealSec($sec);
             $player = new model_Player($uid, $sec);
             $level = $player->objectGet("base", "level");
             foreach ((array) $items as $key => $value) {
                 $tag = $value['tag'];
                 $num = intval($value['num']);
                 if ($tag == 'qiyu_zhidian') {
                     $zhidian_lvl = max(1, $level * 3 - 34);
                     for ($i = 0; $i < $num; $i++) {
                         $items[] = array('tag' => 'qiyu_zhidian', 'level' => $zhidian_lvl, 'num' => 1);
                     }
                     unset($items[$key]);
                 }
             }
             if (is_array($items) && count($items) > 0) {
                 $msg['status'] = 'award';
                 #$msg['content'].="\n$desc";
                 $cdkey = model_Cdkey::gen($items, $desc, 1, 'def');
                 $msg['cdkey'] = $cdkey;
             }
             $r = model_Chat::sendMsg($msg, $uid, 'origin', $sec);
         }
     } else {
         $r = model_Chat::send($msg, 2, "", "toall", $sec);
     }
     if ($r) {
         $mon = new PL_Db_Mongo(DbConfig::getMongodb('userlogin'));
         $mon->switchColl('msgready');
         $mon = $mon->getmc();
         $id = $mon->update(array('ready_id' => (int) $ready_id), array('$set' => array('applicant_status' => 0, 'check_man' => $_SERVER['PHP_AUTH_USER'])));
         echo json_encode(array('s' => 'OK'));
     }
 }
Exemplo n.º 2
0
 /**
  * 测试分区
  */
 function actionTestSec()
 {
     $is_test = self::getParam('is_test');
     $section_list = array_keys(getApp()->getSectionConfig());
     $status = "ok";
     $msg = '';
     $result = array();
     try {
         foreach ($section_list as $value) {
             $mc = new PL_Db_Mongo(DbConfig::getSecMongodb("users", $value));
             $mc->switchColl($value . "_users");
             $fields = array("_id", "level", "exp", "_it", "init_time");
             $cond = array();
             $user = $mc->findOne($cond, $fields);
             $result[$value] = $user;
             if (empty($user)) {
                 $status = 1001;
                 $msg .= "{$value区未查找到用户信息}<br />";
                 //$status = "error";
             }
         }
         echo $status;
         if ($is_test) {
             echo "<pre>";
             echo $msg;
             echo "user data:<br/>";
             var_dump($result);
         }
     } catch (Exception $ex) {
         $status = "error";
         echo $status;
         echo "<pre>";
         echo $msg;
         echo "user data:<br/>";
         var_dump($result);
         var_dump($ex);
     }
 }
Exemplo n.º 3
0
 /**
  * @author 符璨
  * @desc
  *      从cdkey_task取出待处理的cdkey任务进行处理 
  *      批量生成cdkey
  */
 public static function action_gen_cdkey()
 {
     $redis = DbConfig::getRedis('realtime_stat');
     $process_id = getmypid();
     //从cdkey中取出一条状态为0(未处理cdkey生成记录),并更新为1(正在处理)
     $mc = new PL_Db_Mongo(DbConfig::getMongodb('userlogin'));
     $mc->switchColl('cdkey_task');
     $cdkey_task = $mc->findOne(array('status' => 0));
     //没有待处理的任务
     if ($cdkey_task == NULL) {
         return;
     }
     glog::info("[{$process_id}] gen cdkey worker started", 'cdkey');
     $task_id = $cdkey_task['_id'];
     $mc->update(array('_id' => $task_id), array('$set' => array('status' => 1)));
     $pa = $cdkey_task;
     unset($pa['status']);
     $num = $pa['num'];
     $task_id = $cdkey_task['_id'];
     //根据cdkey_task的内容生成cdkey
     $mc->switchColl('cdkey');
     while ($num--) {
         $pa['_id'] = model_Cdkey::genCdkey(13);
         $pa['task_id'] = $task_id->__toString();
         //try以防有重复的cdkey
         try {
             $cdkey = $mc->insert($pa);
             //redis中统计当前已生成的cdkey数目
             $redis->hIncrBy('cdkey_task', $task_id, 1);
             $redis->lpush("cdkey_{$task_id}", $pa['_id']);
         } catch (Exception $ex) {
             $exception_cnt--;
             $num++;
             glog::info("[{$process_id}] gen cdkey worker:Duplicated _id {$pa['_id']}", 'cdkey');
             if (!$exception_cnt) {
                 break;
             }
             continue;
         }
         $exception_cnt = 10;
     }
     $mc->switchColl('cdkey_task');
     $mc->update(array('_id' => $task_id), array('$set' => array('status' => 2)));
     $redis->hDel('cdkey_task', $task_id);
     glog::info("[{$process_id}] gen cdkey worker completed", 'cdkey');
 }