phalcon:跟踪sql语句
来源:互联网 发布:金十数据直播间 编辑:程序博客网 时间:2024/05/20 22:29
转自:https://my.oschina.net/cxz001/blog/289776
在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();
阅读全文
0 0
- phalcon:跟踪sql语句
- phalcon:跟踪sql语句
- oracle跟踪sql语句
- mysql执行sql语句跟踪
- MySQL如何跟踪sql语句
- SQL: 跟踪SQL语句的执行情况
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何跟踪mysql执行的sql语句
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 如何用T-SQL语句建立跟踪
- 自己做第一个小项目的体会
- spark 批量读取HDFS(hive分区)parquet文件
- Spark算子[17]:zip、zipPartitions、zipWithIndex、zipWithUniqueId 实例详解
- MyEclipse中关闭JSP的预览功能
- 2017.12.8
- phalcon:跟踪sql语句
- flume系列-flume单点集成HDFS
- darwin之发送rtp包流程
- 购物车 删除 计算总额
- Spring 注解实例--@Autowired 注入到List和Map
- 解决Ajax 使用get传递中文数据 乱码
- MyBatis 常用写法
- [Java集合](一)概述
- 使用layui修改table样式