public function addTime($user) { $sql = 'INSERT INTO usage(user, day, timestamp) VALUES (:user, date("now", "localtime"), datetime("now", "localtime"))'; $params = array(':user' => $user); if (!$this->db->execute($sql, $params)) { $this->log->error("Unable to update time for {$user}"); return false; } return true; }
$isGuest = $uid == -1 || $uid == 0 ? 1 : 0; $isIntranet = substr($ip, 0, 2) == '10.' ? 1 : 0; $cTime = time(); $ext = ''; //加载数据库查询类 require SITE_PATH . '/addons/library/SimpleDB.class.php'; //全局配置 $config = (require SITE_PATH . '/config/config.inc.php'); //数据库配置 $dbconfig = !empty($config['ONLINE_DB']) ? array_merge($config, $config['ONLINE_DB']) : $config; $db = new SimpleDB($dbconfig); //记录在线统计. if ($_GET['action'] == 'trace') { /* ===================================== step 1 record track ========================================== */ $sql = "INSERT INTO " . $config['DB_PREFIX'] . "online_logs \n\t\t\t\t(day,uid,uname,action,refer,isGuest,isIntranet,ip,agent,ext)\n\t\t\t\tVALUES ( CURRENT_DATE,'{$uid}','{$uname}','{$action}','{$refer}','{$isGuest}','{$isIntranet}','{$ip}','{$agent}','{$ext}');"; $result = $db->execute("{$sql}"); /* ===================================== step 2 update hits ========================================== */ //memcached更新.写入全局点击量.每个应用的点击量.每个版块的点击量. /* ===================================== step 3 update heartbeat ========================================== */ if (cookie('online_update') + $check_time < $cTime) { //刷新用户在线时间 //设置10分钟过期 cookie('online_update', $cTime, 7200); //$_SESSION['online_pageviews'] = 0; //判断是否存在记录. if ($uid > 0) { $where = "WHERE (uid='{$uid}')"; } else { $where = "WHERE (uid=0 AND ip='{$ip}')"; } $sql = "SELECT uid FROM " . $config['DB_PREFIX'] . "online " . $where;
{ return $this->queryStr; } } // 类定义结束 $db = new SimpleDB($config); $data['publicid'] = safe($_GET['publicid']); $data['uid'] = safe($_GET['uid']); $data['module_name'] = isset($_GET['_addons']) ? safe($_GET['_addons']) : safe($_GET['m']); $data['controller_name'] = isset($_GET['_controller']) ? safe($_GET['_controller']) : safe($_GET['c']); $data['action_name'] = isset($_GET['_action']) ? safe($_GET['_action']) : safe($_GET['a']); unset($_GET['publicid'], $_GET['uid'], $_GET['_addons'], $_GET['_controller'], $_GET['_action'], $_GET['m'], $_GET['c'], $_GET['a'], $_GET['mdm']); $data['param'] = json_encode($_GET); $data['ip'] = getClientIp(); $data['brower'] = getBrower(); $data['referer'] = $_SERVER['HTTP_REFERER']; $data['cTime'] = time(); $sql = "INSERT INTO " . $config['DB_PREFIX'] . "visit_log (publicid,uid,module_name,controller_name,action_name,param,ip,brower,referer,cTime) VALUES ( '{$data[publicid]}','{$data[uid]}','{$data[module_name]}','{$data[controller_name]}','{$data[action_name]}','{$data[param]}','{$data[ip]}','{$data[brower]}','{$data[referer]}','{$data[cTime]}');"; // dump ( $sql ); echo $db->execute("{$sql}"); // dump ( $result ); // 自动删除7天前的数据 $file = 'delete_visit_log.lock'; $time = filemtime(RUNTIME_PATH . $file); $over_time = $data['cTime'] - 7 * 24 * 3600; if ($time === false || $time < $over_time) { $fo = fopen(RUNTIME_PATH . $file, "w"); $sql = "DELETE FROM " . $config['DB_PREFIX'] . "visit_log where cTime<" . $over_time; //dump ( $sql ); $db->execute("{$sql}"); }