phalcon: Profiling分析 profilter / Plugin结合,dispatcher调度控制器 监听sql执行日志
个人觉得profilter 跟 logger 功能差不多,logger的功能在于写入,profilter功能在于sql后及时显示分析。都是对sql执行的的分析:一个是写入log文件,一个是直接在页面展示。
下面看例子,
public/index.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $di ->set( 'profiler' , function (){ return new \Phalcon\Db\Profiler(); }, true); $di [ 'db' ] = function () use ( $di ){ //profile $eventManager = new \Phalcon\Events\Manager(); $profiler = new ProfilerEManger(); $eventManager ->attach( 'db' , $profiler ); $db = new DbAdapter( array ( "host" => "localhost" , "username" => "root" , "password" => "" , "dbname" => "demo" , "charset" => "utf8" )); $db ->setEventsManager( $eventManager ); return $db ; }; |
app\plugins\ProfilerEManger.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | use \Phalcon\Mvc\User\Plugin; class ProfilerEManger extends Plugin { public function beforeQuery() { // var_dump($this->db->getSqlStatement());exit; $this ->profiler->startProfile( $this ->db->getSqlStatement()); } public function afterQuery() { $this ->profiler->stopProfile(); } } |
ProfilerController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class ProfilerController extends \Phalcon\Mvc\Controller { public function indexAction() { $users = array (); $use = \Users::findFirst( "id = 1" ); if ( $use ) { $users = $use ->toArray(); } var_dump( $users ); $profile = $this ->profiler->getLastProfile(); var_dump( $profile ); } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Huawei LiteOS基于Cortex-M4 GD32F4平台移植
· mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处
2013-10-25 php json josn_decode()返回的是对像,如何把对像转成数组
2013-10-25 php file_get_contents计时读取一个文件/页面 防止读取不到内容