首页 > 编程知识 正文

mysql面试题sql语句,mysql加字段的sql语句

时间:2023-05-04 08:30:04 阅读:256517 作者:70

在phalcon里有一个PhalconDbProfiler 类,这个类可以用来记录sql语句并计算消耗的时间。

那么如何使用它呢?

手册里其实已经提供了方法,总结如下:

1.向$di里注册profiler服务

$di->set('profiler', function(){

return new PhalconDbProfiler();

}, true);

2.注册db服务时,顺便注册下事件

$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;

});

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();

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。