Exemple #1
0
 public function dispatch()
 {
     file_put_contents(LOG_PATH . "/dispatch.log", "request:" . var_export($_REQUEST, true) . "\n", FILE_APPEND);
     if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
         $raw_post_data = $GLOBALS['HTTP_RAW_POST_DATA'];
     } else {
         $raw_post_data = file_get_contents("php://input");
         //获取消息体
     }
     //file_put_contents(LOG_PATH."/dispatch.log","raw_post_data:".var_export($raw_post_data,true)."\n",FILE_APPEND);
     //        $raw_post_data = str_replace("\'","\"",trim($raw_post_data,"'"));
     //        file_put_contents(LOG_PATH."/dispatch.log","raw_post_data_so:".var_export($raw_post_data,true)."\n",FILE_APPEND);
     $raw_post_data = json_decode($raw_post_data, true);
     //        file_put_contents(LOG_PATH."/dispatch.log","raw_post_data_json_decode:".var_export($raw_post_data,true)."\n",FILE_APPEND);
     $player_id = $raw_post_data['player_id'];
     $cmd0 = $raw_post_data['cmd0'];
     $cmd1 = $raw_post_data['cmd1'];
     $cmd2 = $raw_post_data['cmd2'];
     if ($cmd2 == 410 || $cmd2 == 413 || $cmd2 == 408) {
         $arrParam = $raw_post_data['params'];
         //            $raw_post_data['params'] = str_replace("\'","\"",trim($raw_post_data['params'],"'"));
         //            $arrParam = json_decode($raw_post_data['params'],true);
         if ($cmd2 == 410) {
             foreach ($arrParam as $key => $val) {
                 if (is_array($val)) {
                     foreach ($val as $k => $v) {
                         if ($v == 940005) {
                             $arrParam[$key][$k] = $player_id;
                         }
                     }
                 }
             }
         } elseif ($cmd2 == 413) {
             foreach ($arrParam as $key => $val) {
                 foreach ($val as $k1 => $v1) {
                     if (is_array($v1)) {
                         foreach ($v1 as $k2 => $v2) {
                             if (is_array($v2)) {
                                 foreach ($v2 as $k3 => $v3) {
                                     if ($v3 == 940005) {
                                         $arrParam[$key][$k1][$k2][$k3] = $player_id;
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         } elseif ($cmd2 == 408) {
             foreach ($arrParam as $key => $val) {
                 foreach ($val as $k => $v) {
                     foreach ($v as $g => $p) {
                         if ($p == 940005) {
                             $arrParam[$key][$k][$g] = $player_id;
                         }
                     }
                 }
             }
         }
     } else {
         $arrParam = $raw_post_data['params'];
     }
     $routerClass = '';
     if ($cmd0 == 2) {
         //C2P flash到php的指令
         define('UUZU_AUTH', 2);
         $include_file = APP_PATH . "/C2PRouter.php";
         $routerClass = 'C2PRouter';
     } elseif ($cmd0 == 4) {
         //S2P c++到php的指令
         define('UUZU_AUTH', 0);
         $include_file = APP_PATH . "/S2PRouter.php";
         $routerClass = 'S2PRouter';
     } else {
         die('cmd 0 error');
     }
     global $arrCmd;
     $arrCmd['cmd0'] = $cmd0;
     $arrCmd['cmd1'] = $cmd1;
     $arrCmd['cmd2'] = $cmd2;
     Statistic::tick($cmd0, $cmd1, $cmd2);
     $arrUser = array();
     $arrUser['player_id'] = $player_id;
     if (is_file($include_file)) {
         require $include_file;
         try {
             //调用对应指令函数
             $objRouterClass = new $routerClass();
             call_user_func_array(array($objRouterClass, 'router'), array($cmd0, $cmd1, $cmd2, $arrUser['player_id'], $arrParam));
         } catch (Exception $e) {
             //有异常
             Statistic::report($cmd0, $cmd1, $cmd2, $arrUser, $arrParam, 0, 'enter fail');
         }
     } else {
         Statistic::report($cmd0, $cmd1, $cmd2, $arrUser, $arrParam, 0, 'include file not exist');
         exit('include file not exist');
     }
 }