/**
* 新日志功能
* 跟踪用户在具体页面的操作
*/
public function addlogs($content=‘content‘,$url=‘url‘,$param=‘‘) {
$tabName = ‘system_logs_‘. date(‘Y‘) .‘_‘;
$sql1 = ‘show tables like "‘. $tabName .‘%"‘;
$tabArr = db()->query($sql1);
$tabData = [];
foreach($tabArr as $v) {
foreach ($v as $v1) {
if(strpos($v1,‘_data‘)) continue;
$tabData[] = $v1;
}
}
rsort($tabData);
$num = 100; //日志分表记录数
if(isset($tabData[0]) && !empty($tabData[0])) {
$nowTab = $tabData[0];
$dbNum = db($nowTab)->count();
} else {
$nowTab = 0;
$dbNum = 0;
}
//查询最近一个日志表的数据里有多少,如果没有达到,则直接添加日志记录,如果达到Num条,新建一个表,再添加记录
if(!empty($nowTab) && $dbNum < $num) {
if($dbNum == $num-1) {
//用于快速查询分表日志的时间段的登记
$datac[‘table_name‘] = $nowTab;
$datac[‘last_date‘] = date(‘Y-m-d‘);
$datac[‘create_time‘] = time();
$datac[‘update_time‘] = time();
if(!db(‘SystemLogsConnect‘)->insert($datac)) {
$this->error(‘日志关联失败!‘);
}
}
$data[‘uid‘] = session(‘admin_user.id‘);
$data[‘username‘] = session(‘admin_user.username‘);
$data[‘url‘] = $url;
$data[‘ip‘] = ‘127.0.0.1‘;
$data[‘day‘] = date(‘Y-m-d‘);
$data[‘create_time‘] = time();
$data[‘update_time‘] = time();
$logId = db($nowTab)->insertGetId($data);
if($logId>0) {
$data2[‘id‘] = $logId;
$data2[‘param‘] = $param;
$data2[‘content‘] = session(‘admin_user.username‘) .‘: ‘. $content;
$data2[‘create_time‘] = time();
$data2[‘update_time‘] = time();
if(!db($nowTab .‘_data‘)->insert($data2)) {
return ‘fail‘;
}
} else {
return ‘fail‘;
}
} else {
$newTable = empty($nowTab)?$tabName.‘1‘:$tabName . (substr($nowTab,strrpos($nowTab,‘_‘)+1)+1);
$newTableData = $newTable .‘_data‘;
$createSql = "CREATE TABLE `$newTable` ( `id` int(10) NOT NULL AUTO_INCREMENT, "
. "`uid` int(10) DEFAULT ‘0‘ COMMENT ‘用户ID‘, `username` varchar(20) DEFAULT ‘‘, "
. "`url` varchar(255) DEFAULT ‘‘, `day` varchar(10) DEFAULT ‘‘, "
. "`ip` varchar(20) DEFAULT ‘‘, `create_time` char(10) DEFAULT NULL, `update_time` char(10) DEFAULT NULL, "
. "PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
$createSql1 = "CREATE TABLE `". $newTableData ."` ( `id` int(10) NOT NULL, "
. "`param` text, `content` text, "
. "`create_time` char(10) DEFAULT NULL, `update_time` char(10) DEFAULT NULL, "
. "PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
$query1 = db()->execute($createSql);
$query2 = db()->execute($createSql1);
$data[‘uid‘] = session(‘admin_user.id‘);
$data[‘username‘] = session(‘admin_user.username‘);
$data[‘url‘] = $url;
$data[‘ip‘] = ‘127.0.0.1‘;
$data[‘day‘] = date(‘Y-m-d‘);
$data[‘create_time‘] = time();
$data[‘update_time‘] = time();
$logId = db($newTable)->insertGetId($data);
if($logId>0) {
$data2[‘id‘] = $logId;
$data2[‘param‘] = $param;
$data2[‘content‘] = session(‘admin_user.username‘) .‘: ‘. $content;
$data2[‘create_time‘] = time();
$data2[‘update_time‘] = time();
if(!db($newTableData)->insert($data2)) {
return ‘fail‘;
}
} else {
return ‘fail‘;
}
}
}
原文:https://www.cnblogs.com/dehong100/p/12768823.html