Files
emlog_online2/online2_callback.php
2012-10-18 09:28:53 +08:00

52 lines
2.0 KiB
PHP

<?php
/**
* 在线统计插件
* @copyright (c) xiaosong.org All Rights Reserved
*/
if(!defined('EMLOG_ROOT')) {exit('error!');}
function callback_init(){
$DB = MySql::getInstance();
$is_exist_online_query = $DB->query('show tables like "'.DB_PREFIX.'online2"');
$is_exist_maxonline_query = $DB->query('show tables like "'.DB_PREFIX.'maxonline"');
$is_exist_option = $DB->query("SELECT 1 FROM ".DB_PREFIX."options WHERE option_name='maxOnline'");
$dbcharset = 'utf8';
$type = 'MYISAM';
$add = $DB->getMysqlVersion() > '4.1' ? "ENGINE=".$type." DEFAULT CHARSET=".$dbcharset.";":"TYPE=".$type.";";
if ($DB->num_rows($is_exist_online_query) == 0) {
$sql_online = "
CREATE TABLE `".DB_PREFIX."online2` (
`id` int(10) unsigned NOT NULL auto_increment,
`ip` varchar(128) NOT NULL default '',
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
`useragent` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `ip` (`ip`)
)".$add;
$DB->query($sql_online);
}
if ($DB->num_rows($is_exist_maxonline_query) != 0) {
$res_max = $DB->once_fetch_array("SELECT maximum, DATE(dt) AS maxDate FROM ".DB_PREFIX."maxonline");
$timeUTC = emStrtotime($res_max["maxDate"]);
$cacheData = serialize(array('maximum' => $res_max["maximum"], 'maxDate' => $timeUTC));
$CACHE = Cache::getInstance();
$CACHE->cacheWrite($cacheData, 'maxOnline');
$query = $DB->query("DROP TABLE IF EXISTS ".DB_PREFIX."maxonline");
}
if (!$DB->num_rows($is_exist_option)) {
$DB->query("INSERT INTO ".DB_PREFIX."options (option_name, option_value) VALUES('maxOnline', '".serialize(array('maximum' => 0, 'maxDate' => time()))."')");
}
$cachefile = EMLOG_ROOT . '/content/cache/maxOnline.php';
if (file_exists($cachefile) && filesize($cachefile) > 0) {
$data = file_get_contents($cachefile);
$data = str_replace("<?php exit;//", '', $data);
Option::updateOption('maxOnline', $data);
unlink($cachefile);
}
}
function callback_rm(){
$DB = MySql::getInstance();
$query = $DB->query("DROP TABLE IF EXISTS ".DB_PREFIX."online2");
}
?>