Exemplo n.º 1
0
 /**
  * TrackInquiryAct::act_trackInfoEn()
  * 查询目的地跟踪信息
  * @param string $carrier 运输方式名称
  * @param string $tracknum 跟踪号
  * @param string $tracklan 语言
  * @return json string 
  */
 public function act_trackInfoEn()
 {
     $carrier = isset($_REQUEST['carrier']) ? post_check($_REQUEST['carrier']) : '';
     $tracknum = isset($_REQUEST['tracknum']) ? post_check($_REQUEST['tracknum']) : '';
     $tracklan = isset($_REQUEST['tracklan']) ? abs(intval($_REQUEST['tracklan'])) : 10000;
     $ip = getClientIP();
     $ipNum = sprintf('%u', ip2long($ip));
     if (in_array($carrier, array('美国邮政'))) {
         $tracklan = 10000;
     }
     if (empty($carrier)) {
         self::$errCode = 10000;
         self::$errMsg = "运输方式参数非法!";
         @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:" . self::$errMsg . "\n");
         return false;
     }
     if (empty($tracknum)) {
         self::$errCode = 10001;
         self::$errMsg = "跟踪号参数非法!";
         @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:" . self::$errMsg . "\n");
         return false;
     }
     //访问统计逻辑
     $data = array();
     $times = time();
     $maxcount = C("USER_MAX_COUNT");
     $exptime = C("USER_EXPIRES_TIME");
     $res = TrackInquiryModel::showIpStat($ipNum);
     $stats = isset($res['count']) ? $res['count'] : 0;
     $exptimes = isset($res['expires']) ? $res['expires'] : 0;
     $data['trackInfoEn'] = array();
     if ($stats > $maxcount && $exptimes > $times && !in_array($ip, array('183.233.230.2'), true)) {
         array_push($data['trackInfoEn'], array("postion" => "server", "event" => "{$ip}:Visits over", "trackTime" => date('Y-m-d H:i:s', time()), "stat" => 0));
         @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:Visits over\n");
         return $data;
         exit;
     }
     if (!$stats) {
         $res = TrackInquiryModel::updateStatInfo($ipNum, array("ip" => $ip, "count" => 1, "expires" => $times + $exptime, "ipNum" => $ipNum));
     } else {
         if ($exptimes < $times) {
             $res = TrackInquiryModel::updateStatInfo($ipNum, array("ip" => $ip, "count" => 1, "expires" => $times + $exptime, "ipNum" => $ipNum));
         } else {
             $res = TrackInquiryModel::updateStatInfo($ipNum, array("ip" => $ip, "count" => $stats + 1, "ipNum" => $ipNum));
         }
     }
     //查询跟踪信息并memcache
     $cacheName = md5("track_number_info" . $carrier . "_" . $tracknum . "_" . $tracklan);
     $memc_obj = new Cache(C('CACHEGROUP'));
     $trackInfo = $memc_obj->get_extral($cacheName);
     $trackInfo = @unserialize($trackInfo);
     if (!empty($trackInfo['trackInfo'])) {
         @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:memcache success\n");
         return $trackInfo;
     } else {
         $trackInfo = TrackInquiryModel::trackInfoEn($carrier, $tracknum, $tracklan);
         if (!in_array($trackInfo['trackInfoEn'][0]['event'], array('Time out', 'time out', 'No data', 'System Interface exceptions,Please try again!'))) {
             $isok = $memc_obj->set_extral($cacheName, serialize($trackInfo), 7200);
             if (!$isok) {
                 self::$errCode = 0;
                 self::$errMsg = 'memcache缓存出错!';
                 @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:" . self::$errMsg . "\n");
                 //return false;
             }
         }
         if (in_array($trackInfo['trackInfoEn'][0]['event'], array('Time out', 'time out'))) {
             @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:" . $trackInfo['trackInfo'][0]['event'] . "\n");
         }
         if ($trackInfo['trackInfoEn'][0]['postion'] == 'No data') {
             @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:" . $trackInfo['trackInfo'][0]['event'] . "\n");
         }
         if (empty($trackInfo['trackInfoEn'])) {
             @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:接口获取数据异常\n");
         }
         @write_a_file(self::$logFile, date('Y-m-d H:i:s') . "=====" . $ip . "=====" . $carrier . "=====" . $tracknum . "=====" . $tracklan . "=====event:api interface success\n");
         return $trackInfo;
     }
 }
Exemplo n.º 2
0
 /**
  * TrackInquiryModel::modListCount()
  * 返回某个条件结果统计的总数
  * @param string $where 查询条件
  * @return integer 总数量 
  */
 public static function modListCount($where)
 {
     self::initDB();
     $sql = "SELECT count(*) FROM " . self::$prefix . self::$tab_wode . " WHERE {$where}";
     $query = self::$dbConn->query($sql);
     $res = self::$dbConn->fetch_row($query);
     if ($res) {
         return $res[0];
     } else {
         self::$errCode = 10000;
         self::$errMsg = "获取数据失败";
         return 0;
     }
 }