示例#1
0
 public function __construct()
 {
     $ser = $this;
     //读取请求之前,验证是否多点登录
     //在执行controller 逻辑之前判断
     self::rEvent('E_BCR', function () use($ser) {
         if ($_REQUEST['__noauth__'] == 1) {
             return;
         }
         $app = app();
         $sec = $app->getsec();
         $uid = $app->getuid();
         $um = new model_LoginUser($uid);
         $d = $um->get();
         if ($d['isban']) {
             exit(0);
         }
         //合服阻挡进入
         $filter_config = dzm_base::load_config('mergesec', 'prevent_enter');
         model_Util::preventEnter($filter_config, $sec, $uid);
         $cm = $app->vget('CM');
         $cc = $app->vget('CC');
         if ($app->vget('RESOVER')) {
             return;
         }
         $iccs = $app->vget('ICCS');
         $icms = $app->vget('ICMS');
         $skip_sig_check_method = $app->vget('skip_sig_check_method');
         $skip_sig_check_controller = $app->vget('skip_sig_check_controller');
         if (!isset($skip_sig_check_method[$cm]) && !isset($skip_sig_check_controller[$cc])) {
             // 验证数据签名
             $req =& $app->vget('REQARR');
             $ret = $ser->authSig($req);
             if ($ret) {
                 //glog::info(json_encode($ret),'sign');
                 //glog::info(json_encode($req),'sign');
                 $app->vset('RESARR', $ret);
                 $ser->finishResponse();
                 exit(0);
             }
         }
         //do nothing , 登陆,打点,都没有session
         if ($cc == 'System' || $cc == 'Statistic') {
             return;
         }
         if (isset($iccs[$cc]) || isset($icms[$cm])) {
             $app->vset('NOLOG', true);
             return;
         }
         $sess = $app['session'];
         if ($sess->isDupLogin()) {
             $app->vset('RESARR', array('s' => 'dup'));
             $ser->finishResponse();
             //
             exit(0);
         }
     });
     //退出之前,结果已经返回客户端
     self::rEvent('E_QUIT', function () {
         //记录日志,增加统计
         $app = app();
         $req =& $app->vget('REQARR');
         $res =& $app->vget('RESARR');
         $ss =& $app->vget('session');
         $uid = $app->getuid();
         $sec = $app->getsec();
         $ltime = $app->getltime();
         //本次登录时间
         $cm = $app->vget('CM');
         $s = $res['s'];
         $time = $_SERVER['REQUEST_TIME'];
         //全日志
         /* TODO 做个开关,只针对一小部分人开启全日志
         			$hour = date('Ymd',$time);
                     $request_end_time = microtime(true);
                     glog::detail($uid,$sec,$cm,$request_end_time-$app->request_start_time,$req,$res);
                     */
         if ($uid == 68321 || $uid == 5225) {
             $req['_SERVER'] = $_SERVER;
             glog::detail($uid, $sec, $cm, $request_end_time - $app->request_start_time, $req, $res);
         }
         //处理统计,
         //todo:实时统计的东西也放到这里来
         $stats =& $app->ref('STATS');
         if ($stats) {
             foreach ($stats as &$object) {
                 $object['_tm'] = $time;
                 $object['_sec'] = $sec;
                 $object['_u'] = $uid;
                 $object['_cm'] = $cm;
                 $object['_s'] = 'OK';
                 $object['_ver'] = P_VERSION;
                 $object['_lvl'] = $_SESSION['lvl'];
                 $object['_it'] = $_SESSION['init_time'];
                 $object['_vip'] = $_SESSION['vip'];
                 $object['istest'] = $_SESSION['istest'];
                 $object['_source'] = $_SESSION['source'];
                 try {
                     //                        model_OpLog::add($object);
                 } catch (Exception $ex) {
                     //error_log($ex->getMessage());
                     error_log("记录日志出错");
                     error_log(json_encode($object));
                 }
             }
             // scribe关闭连接
             try {
                 model_StatLog::close();
             } catch (Exception $ex) {
                 error_log("scribe日志关闭出错");
             }
             if ($s == 'OK') {
                 return;
             }
         }
         if (!$cm) {
             return;
         }
         //明确的设置了不记录log
         if ($app->vget('NOLOG')) {
             return;
         }
         if ($app->vget['DEBUG']) {
             error_log("session: " . print_r($_SESSION, true) . "\n", 3, LOG_ROOT . "/debug.log");
         }
         $logp =& $app->vget('LOGP');
         if (!$logp) {
             $logp =& $req['p'];
         }
         $logp['_cm'] = $cm;
         $logp['_u'] = $uid;
         $logp['_sec'] = $sec;
         $logp['_s'] = $s;
         $logp['_tm'] = $time;
         $logp['msg'] = $res['msg'];
         //			model_OpLog::add($logp);
     });
 }
示例#2
0
 function actionsendallCdkeyActMsg()
 {
     $ymd = trim($_REQUEST['ymd']);
     $chuangshu = trim($_REQUEST['chuangshu']);
     $urlconfigs = dzm_base::load_config('system', 'platform_admin_url');
     foreach ($urlconfigs as $plat => $url) {
         if ($plat == "dev") {
             $url .= "?mod=jsapi&action=SendMSGForCurl&ver=wyc_act&platform=dev&config=dev&ymd=" . $ymd . "&chuangshu=" . $chuangshu;
         } else {
             $url .= "?mod=jsapi&action=SendMSGForCurl&ymd=" . $ymd . "&chuangshu=" . $chuangshu;
         }
         //post 请求开始
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         //需要获取的URL地址
         //curl_setopt($ch, CURLOPT_POST, 1); //会发送一个常规的POST请求.
         //curl_setopt($ch, CURLOPT_POSTFIELDS, $json); //post参数
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         //让curl_exec返回结果数据,而不是直接输出
         curl_setopt($ch, CURLOPT_HEADER, false);
         //不输出文件头
         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
         //timeout on connect,单位秒,也可以设置毫秒,用CURLOPT_CONNECTTIMEOUT参数
         curl_setopt($ch, CURLOPT_TIMEOUT, 60);
         //timeout on response,单位秒,也可以设置毫秒,用CURLOPT_TIMEOUT_MS参数
         $result = curl_exec($ch);
         echo $result;
         //如果不出现timeout,服务器成功返回,则返回正常结果,格式是一个json串。
         curl_close($ch);
         //关闭会话,释放资源
     }
 }
示例#3
0
 /**
  * @author 符璨
  * @desc
  *      执行给福利号用户发送奖励的定时任务
  */
 public static function action_awarduser_timer()
 {
     if (!dzm_base::load_config('system', 'open_fulihao_awards')) {
         return false;
     }
     //error_log("定时任务开始:");
     $lm = new model_AwardUser(1);
     $lm->sendAwardByTask();
 }