phalcon:跟踪sql语句
2017-12-18 16:38
453 查看
转自:https://my.oschina.net/cxz001/blog/289776
在phalcon里有一个\Phalcon\Db\Profiler 类,这个类可以用来记录sql语句并计算消耗的时间。
那么如何使用它呢?
手册里其实已经提供了方法,总结如下:
1.向$di里注册profiler服务
2.注册db服务时,注册事件
3.程序中调出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:跟踪sql语句
- phalcon:跟踪sql语句
- EF Profiler 查看跟踪Entity Framework SQL 语句
- Oracle数据库中跟踪sql语句介绍
- 使用SQL Server Profiler跟踪“金蝶K3ERP“后台sql语句执行情况
- 用好SQL事件探查器来跟踪SQL语句执行
- mssql server跟踪某个表sql语句的执行
- 用SQL语句来建立跟踪的问题
- 用SQL语句来建立跟踪的问题
- 如何用T-SQL语句建立跟踪
- 用SQL语句来建立跟踪的问题
- 如何使用SQLPLUS分析SQL语句(查询执行计划跟踪)
- MySQL跟踪sql语句(安装mysql后需要做的事情)
- 小布老师---从客户端到SQL语句的跟踪
- 批量生成设置跟踪语句的SQL
- zzORacle中sql语句跟踪监视
- 跟踪监控MYSQL执行的sql语句
- 10046诊断事件——跟踪SQL语句!
- SQL: 跟踪SQL语句的执行情况
- 如何跟踪mysql执行的sql语句