Laravel框架实现利用监听器进行sql语句记录功能


Posted in PHP onJune 06, 2018

本文实例讲述了Laravel框架实现利用监听器进行sql语句记录功能。分享给大家供大家参考,具体如下:

利用监听器进行sql语句记录

1、监听sql语句的事件类已经定义,直接创建监听器类即可:

# 监听sql
make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted

2、监听器类代码

./app/Listeners/QueryListener.php

<?php
namespace App\Listeners;
use Illuminate\Database\Events\QueryExecuted;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Http\Models\OperationLog;
class QueryListener
{
  /**
   * Create the event listener.
   *
   * @return void
   */
  public function __construct()
  {
    //
  }
  /**
   * Handle the event.
   *
   * @param QueryExecuted $event
   * @return void
   */
  public function handle(QueryExecuted $event)
  {
    $sql = str_replace("?", "'%s'", $event->sql);
    $log = vsprintf($sql, $event->bindings);
    # 此处$uid定义是依赖于中间件记录操作日志代码
    $uid = isset($_SERVER['admin_uid']) ? $_SERVER['admin_uid'] : 0;
    if('select' != substr($log , 0 , 6)){
      if('insert into `operationLog`' != substr($log , 0 , 26)){
        $OperationLog = new OperationLog();
        $OperationLog->uid = $uid;
        $OperationLog->sql = $log;
        $OperationLog->input = '';
        $OperationLog->save();
      }
    }
  }
}

3、引入监听器

./app/Providers/EventServiceProvider.php

protected $listen = [
    ...
    \Illuminate\Database\Events\QueryExecuted::class => [
      'App\Listeners\QueryListener'
    ],
    ...
  ];

此时进行操作时就会记录sql日志

相关文章:

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
最省空间的计数器
Oct 09 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
PHP解析RSS的方法
Mar 05 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 #PHP
PHP实现的curl批量请求操作示例
Jun 06 #PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 #PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 #PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 #PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 #PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 #PHP
You might like
php中的数组操作函数整理
2008/08/18 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
php制作动态随机验证码
2015/02/12 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
Div Select挡住的解决办法
2008/08/07 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
Python正则表达式介绍
2012/08/06 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
python字典一键多值实例代码分享
2019/06/14 Python
对Django中内置的User模型实例详解
2019/08/16 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
运动员获奖感言
2014/08/15 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
前台文员岗位职责
2015/02/04 职场文书
总账会计岗位职责
2015/04/02 职场文书
nginx优化的六点方法
2021/03/31 Servers