php 加日志,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='操作日志表';

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方法里,执 ...

关于 VS 调用存储过程加载很慢和SQL 执行很快的那些事

执行同样的存储过程,调用同样的参数 在VS 中调用存储过程和传参后,到数据加载需要20秒或更多, 在SQL直接调用则不到一秒,同一个存储过程为什么有这么大的区别呢? 原因:存储过程计划失效的原因 产生 ...

随机推荐

ajax 如何提交数据到后台jsp页面,以及提交完跳转到jsp页面

我logincheck.jsp页面取传参数代码: String user=request.getParameter("user1"); String pwd=request.get ...

vue2 上传图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值