phalcon mysql in_phalcon:跟踪sql语句
在phalcon里有一个\Phalcon\Db\Profiler 类,这个类可以用来记录sql语句并计算消耗的时间。那么如何使用它呢?
手册里其实已经提供了方法,总结如下:
1.向$di里注册profiler服务
$di->set('profiler', function(){
return new\Phalcon\Db\Profiler();
}, true);
2.注册db服务时,顺便注册下事件
$di->set('db', function() use ($di) {
//新建一个事件管理器
$eventsManager = new \Phalcon\Events\Manager();
//从di中获取共享的profiler实例
$profiler = $di->getProfiler();
//监听所有的db事件
$eventsManager->attach('db', function($event, $connection) use ($profiler) {
//一条语句查询之前事件,profiler开始记录sql语句
if ($event->getType() == 'beforeQuery') {
$profiler->startProfile($connection->getSQLStatement());
}
//一条语句查询结束,结束本次记录,记录结果会保存在profiler对象中
if ($event->getType() == 'afterQuery') {
$profiler->stopProfile();
}
});
$connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(
"host" => "localhost",
"username" => "root",
"password" => "secret",
"dbname" => "invo"
));
//将事件管理器绑定到db实例中
$connection->setEventsManager($eventsManager);
return $connection;
});
3.程序中调出sql记录
//执行一些查询
Robots::find();
Robots::find(array("order" => "name"));
Robots::find(array("limit" => 30));
//获取所有的prifler记录结果,这是一个数组,每条记录对应一个sql语句
$profiles = $this->di->get('profiler')->getProfiles();
//遍历输出
foreach ($profiles as $profile) {
echo "SQL语句: ", $profile->getSQLStatement(), "\n";
echo "开始时间: ", $profile->getInitialTime(), "\n";
echo "结束时间: ", $profile->getFinalTime(), "\n";
echo "消耗时间: ", $profile->getTotalElapsedSeconds(), "\n";
}
//直接获取最后一条sql语句
echo $this->di->get('profiler')->getLastProfile()->getSQLStatement();
phalcon mysql in_phalcon:跟踪sql语句相关推荐
- ef mysql跟踪sql语句_EF Core 日志跟踪sql语句
EF Core 日志跟踪sql语句 1.新增自定义ILoggerProvider实现类 public class EFLoggerProvider : ILoggerProvider { public ...
- MySQL数据库:SQL语句
MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...
- php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例
这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...
- 1.MySQL数据库 2.SQL语句
01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- MySQL数据库的SQL语句
MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...
- MySQL数据库高级SQL语句(三)
MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...
- oracle 10046事件查看,使用oracle的10046事件跟踪SQL语句
使用oracle的10046事件跟踪SQL语句 我们在分析应用程序性能问题的时候,更多地需要关注其中SQL语句 的执行情况,因为通常应用程序的性能瓶颈会在数据库这边,因此数据库的sql语句是我们优化的 ...
- mysql怎么写sql语句_Navicat如何写sql语句
sql是操作数据库中数据的语句,在不同的数据库中会略有不同.Navicat for MySQL是一款很方便的MySQL客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额 ...
最新文章
- 用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
- UNIX网络编程——客户/服务器程序设计示范(一)
- Js:DOM对象操作常用的方法和属性
- 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
- mysql数据库内置函数大全_MySQL数据库——内置函数
- 8分钟学会Consul集群搭建及微服务概念
- sql优化技巧_使用这些查询优化技巧成为SQL向导
- CSDN中使用编辑器空格
- php session实现原理
- python开发环境anaconda3_使用Anaconda3配置多版本Python虚拟开发环境
- 208个地级市和31个省市城乡泰尔指数(2010-2019年)
- Linux运维基础软件
- java 类名_Java类的命名规则是什么
- c语言码流文件,视频文件大小的计算以及视频在网络上的传输(KB、kb、GB、kbps码率)...
- python中next是什么意思_Python代码中next()函数具有哪些功能呢?
- 自动驾驶轨迹规划--算法综述
- 企业经营中的“细节杀”:无线AP让你比别人更快一步
- 电脑作为文件服务器,把电脑做成一个云文件服务器
- SM-G9008V Root,google框架安装 设置开发者模式
- 图片直接引入base64格式的
热门文章
- 语音合成(TTS)论文优选:Forward Attention in Sequence- To-Sequence Acoustic Modeling for Speech Synthesis
- 纪念我的小宝贝——浪浪
- uni-app设置背景图片,backgroundImage
- 微信APP退款功能开发
- Photoshop-图层相关概念-LayerComp-Layers-移动旋转复制图层-复合图层
- java8 Stream详解
- 区块链最可能大规模应用场景:社交网络和共享经济
- 单例模式只会懒汉饿汉?读完本篇让你面试疯狂加分
- UnFlow:具有双向普查损失的光流的无监督学习
- 无线路由器设置里的DHCP服务是什么意思