发布网友 发布时间:2022-04-08 09:28
共2个回答
懂视网 时间:2022-04-08 13:49
在phalcon里有一个PhalconDbProfiler 类,这个类可以用来记录sql语句并计算消耗的时间。那么如何使用它呢?
手册里其实已经提供了方法,总结如下:
$di->set(‘profiler‘, function(){ return newPhalconDbProfiler(); }, true);
$di->set(‘db‘, function() use ($di) { //新建一个事件管理器 $eventsManager = new PhalconEventsManager(); //从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 PhalconDbAdapterPdoMysql(array( "host" => "localhost", "username" => "root", "password" => "secret", "dbname" => "invo" )); //将事件管理器绑定到db实例中 $connection->setEventsManager($eventsManager); return $connection; });
//执行一些查询 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(), " "; echo "开始时间: ", $profile->getInitialTime(), " "; echo "结束时间: ", $profile->getFinalTime(), " "; echo "消耗时间: ", $profile->getTotalElapsedSeconds(), " "; } //直接获取最后一条sql语句 echo $this->di->get(‘profiler‘)->getLastProfile()->getSQLStatement();
phalcon:跟踪sql语句
标签:
热心网友 时间:2022-04-08 10:57
直接写原生的mysql_connect() mysql_select_db() mysql_query() 再循环结果集取数据