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

  



 

posted @   穆晟铭  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· 如何打造一个高并发系统?
· .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计时读取一个文件/页面 防止读取不到内容
点击右上角即可分享
微信分享提示