首页 > Web开发 > 详细

自己写的ThinkPHP日志函数

时间:2020-04-24 17:59:15      阅读:55      评论:0      收藏:0      [点我收藏+]

/**
     * 新日志功能
     * 跟踪用户在具体页面的操作
     */
    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‘;
            }
        }
    }

自己写的ThinkPHP日志函数

原文:https://www.cnblogs.com/dehong100/p/12768823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!