ThinkPHP执行调用存储过程添加日志
本文出至:新太潮流网络博客
//PHP代码部分 /**
* [LogAdd 操作日志]
* @param [string] $userid [用户的ID]
* @param [string] $type [类型]
* @param [string] $controller_name [当前控制器的中文名称]
* @param [string] $function_name [当前方法的中文名称]
*/
function LogAdd($userid,$type,$controller_name,$function_name){
//组合数据
$data['userid'] = $userid;//当前操作的用户
$data['type'] = $type;//当前操作的类型
$data['url'] = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];//当前操作的URL地址
$data['controller'] = CONTROLLER_NAME;//当前控制器的名称
$data['controller_name'] = $controller_name;//当前控制器的中文名称
$data['function'] = ACTION_NAME;//当前方法的名称
$data['function_name'] = $function_name;//当前方法的中文名称
$data['ip'] = getClientIP();//IP地址
$data['create_time'] = date('Y-m-d H:i:s',time());//登录时间
//表名
$data_fun = 't_sys_logs_'.date('Y',time());
//执行原生SQL
$Model = M();
$results = $Model->query('show tables');//打开库
//组装为一维数组进行判断
foreach($results as $k=>$v){
$data_table_show[] = $v['tables_in_dbwxapplite'];
}
//先判断是否存在表
if(in_array(strtolower($data_fun), $data_table_show)){ //存在表直接添加日志
$loginLog = M($data_fun)->add($data);
if($loginLog != false){
$res = ['status' => '1','result' => '写入成功','data' => $loginLog];
}else{
$res = ['status' => '0','result' => '写入失败','data' => $loginLog];
}
}else{
//不存在表,先调用存储过程,在执行添加日志
$code = $Model->query("call spCreateTableSysLogs(".date('Y',time()).")");
if($code){
//存储过程成功则添加数据
$loginLog = M($data_fun)->add($data);
if($loginLog != false){
$res = ['status' => '1','result' => '写入成功','data' => $loginLog];
}else{
$res = ['status' => '0','result' => '写入失败','data' => $loginLog];
}
}else{
//失败
$res = ['status' => '0','result' => '存储过程调用失败','data' => $loginLog];
}
}
return $res;
}
//MySQL脚本数据库部分 -- ----------------------------
-- Table structure for t_sys_logs_2017
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_logs_2017`;
CREATE TABLE `t_sys_logs_2017` (
`logid` int(11) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
`userid` varchar(32) NOT NULL DEFAULT '0' COMMENT '创建人ID',
`type` varchar(8) NOT NULL COMMENT '日志操作类型,如:登录;注销;退出;修改密码;创建报名',
`url` varchar(100) NOT NULL DEFAULT 'www' COMMENT '当前操作的URL',
`controller` varchar(30) NOT NULL DEFAULT '控制器的名称' COMMENT '当前控制器的名称',
`controller_name` varchar(30) NOT NULL DEFAULT '控制器的中文名称' COMMENT '当前控制器的中文名称',
`function` varchar(30) NOT NULL DEFAULT '方法的名称' COMMENT '当前方法的名称',
`function_name` varchar(30) NOT NULL DEFAULT '方法的中文名称' COMMENT '当前方法的中文名称',
`ip` varchar(30) NOT NULL DEFAULT '255.255.255.255' COMMENT '当前操作客户端IP',
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`logid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
本文出至:新太潮流网络博客
ThinkPHP执行调用存储过程添加日志的更多相关文章
- mysql 触发器检测表数据添加,进而调用存储过程检测数据,进而调用存储过程添加数据
触发器: beginDECLARE user_mes INT(64);SELECT user_id into user_mes FROM order_orderlist where id = new. ...
- JDBC调用存储过程的例子
下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员 ...
- MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能
一.索引,分页性能,执行计划,慢日志 (1)索引的种类,创建语句,名词补充(最左前缀匹配,覆盖索引,索引合并,局部索引等): import sys # http://www.cnblogs.com/w ...
- C#调用存储过程执行缓慢,但在数据库中执行却很快的问题
参考: http://www.debugease.com/mssqlbasic/976568.html https://www.cnblogs.com/Irving/p/3951220.html ht ...
- Oracle定时任务执行存储过程备份日志记录表
写在前面 需求 1.备份系统日志表T_S_LOG, 按照操作时间字段OPERATETIME, 将每天的日志增量备份到另一张表. 思路 1.创建一张数据结构完全相同的表T_S_LOG_BAK作为备份表 ...
- jdbc执行预处理,批处理,LOB字段处理,调用存储过程
(1)jdbc执行预处理 PreparedStatment预备语句 eg:String sql="insert into user(id,name,birthday,money) value ...
- hibernate的update() 更新延迟或者无法更新,导致同个service调用存储过程执行方法不精确
hibernate的update()方法无法更新,不报错 原因是hibernate的update方法操作的是缓存,可以flush下先. 设置缓存为false理论上也可. 在一个serivce方法里,执 ...
- sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。
用sql server自带的消息队列service borker,调用存储过程中,执行了一个跨库的操作,先是用了一个用户,权限什么都给够了,但是一直提示 服务器主体 "user" ...
- 关于 VS 调用存储过程加载很慢和SQL 执行很快的那些事
执行同样的存储过程,调用同样的参数 在VS 中调用存储过程和传参后,到数据加载需要20秒或更多, 在SQL直接调用则不到一秒,同一个存储过程为什么有这么大的区别呢? 原因:存储过程计划失效的原因 产生 ...
随机推荐
- PTA (Advanced Level) 1024 Palindromic Number
Palindromic Number A number that will be the same when it is written forwards or backwards is known ...
- Struts2配置文件struts.xml的编辑自动提示代码功能
第一步:复制struts.xml头部地址 第二步:Window --->Preferences 第三步:XML--->XML Catalog--->Add 第四步:在Key中粘贴复制 ...
- UOJ #357. 【JOI2017春季合宿】Sparklers
Description 小S和小M去看花火大会. 一共有 n 个人按顺序排成一排,每个人手上有一个仅能被点燃一次的烟花.最开始时第 K 个人手上的烟花是点燃的. 烟花最多能燃烧 T 时间.每当两个人的 ...
- Node.js文件操作二
前面的博客 Node.js文件操作一中主要是对文件的读写操作,其实还有文件这块还有一些其他操作. 一.验证文件path是否正确(系统是如下定义的) fs.exists = function(path, ...
- oracle一个listener侦听多个实例的配置
https://blog.csdn.net/silesilesile/article/details/79725337
- Mysql开启远程服务
开启远程服务: 登录mysql: //赋予root用户所有权限,远程登录密码是123456 grant all privileges on *.* to '; flush privileges; 设置 ...
- java中对JVM的深度解析、调优工具、垃圾回收
jdk自带的JVM调优工具 jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具.jdk自带工具一般在jdk bin目录下面,以exe的形式直接点击就可以使用,其中包含分析工 ...
- Spring系列之——spring security
1 搭建springboot 2 配置pom依赖(springboot版本为2.1.3) <dependency> <groupId>org.springframework.b ...
- Hive可视化工具
目前市面上的Hive可视化客户端工具,大都是C/S模式的,安装使用都不是太方便,目前有一款基于WEB的可视化工具TreeSoft,通过浏览器就可以访问使用了,并且可以同时管理.维护.监控MySQL,O ...
- Java - Float与Double类型比较
https://blog.csdn.net/wcxiaoych/article/details/42806313