问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

phalcon框架中如何实现脱离模型进行sql查询?

发布网友 发布时间:2022-04-08 09:28

我来回答

2个回答

懂视网 时间:2022-04-08 13:49

在phalcon里有一个PhalconDbProfiler 类,这个类可以用来记录sql语句并计算消耗的时间。那么如何使用它呢?

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

1.向$di里注册profiler服务

$di->set(‘profiler‘, function(){
 return newPhalconDbProfiler();
}, 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(), "
";
 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() 再循环结果集取数据
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 应该怎么运营? 如何在两部手机同时登陆一个? 能不能几个人一起管理? 苹果手机如何一次登陆两个? 快递还没寄出能退费吗l9元退多川? 有多个的大家都怎么管理的?好几个手机带着很麻烦。 快递没寄成功能不能退款 快递不寄了可以退款吗 昨天在丰巢快递柜寄件,下了单,微信支付现金了,可是柜门没打开,后来取消单了,还能退款吗 快递寄出后中通快递员联系我说东西是贵重物品他们不寄,那我可以要求退钱吗? 去英国买巧克力怎么样?有哪些好吃的牌子? 我有个快递已经揽收。已经打电话不要发出。还没有寄出。快递费能不能退?_百度问一问 曼妃巧克力怎么样 寄快递退回来了钱可以退回来吗?- 问一问 健达巧克力怎么样?跟德芙比起来呢? 邮政包裹没发出去,拿回来的话,要收费吗,还有邮费能退么?- 问一问 在菜鸟驿站寄快递,已经下好单了,还没发货,又不想寄了,可以取回吗,取回会退款吗? 香港正品巧克力代购怎么样 在菜鸟驿站寄快递,已经下好单了,还没发货,又不想寄了,可以取回吗,取回会退款吗 取消寄件可以退款吗 介绍几部官场完结小说,主角要背景深厚(红色),主角最后中央之类的。 求官场小说,大神们都推荐推荐,有背景又比较低调的主角,一步一步的... 经典官场风云小说,求推荐几本? 悬浮窗设置哪里有 根本就没有微信 oppo手机管家悬浮窗管理没有微信 求官场登顶小说,官气已近看过了 快手拍视频上下黑屏就中间是录的视频能恢复满屏吗? 快手上下可以带字粉色中间视频用什么软件? 主角最后登鼎的官场小说 悬浮窗里面也没有微信,怎么设置微信悬浮窗? 给我推荐几部完本的官场小说例如:(官气)(官道)之类的,情节细腻,最后问鼎的很多官场小说写不到最后 求一部官场小说名 - 信息提示 您好 我得悬浮窗里边没有微信怎么办 手机管家-权限隐私-悬浮窗-没有微信选项是因为什么! 荣耀平板v6好吗 荣耀平板V6怎么样?值得入手吗? 荣耀平板V6玩游戏体验如何? 宋朝十大王爷 女孩子起名叫王秀什么好听