phalcon: plugin 结合Manager事件管理dispatcher调度控制器 监听sql日志记录或其他拦截出来
Posted 穆晟铭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phalcon: plugin 结合Manager事件管理dispatcher调度控制器 监听sql日志记录或其他拦截出来相关的知识,希望对你有一定的参考价值。
可能用到的类
phalcon\mvc\use\plugin
Phalcon\Mvc\Dispatcher as MvcDispatcher
Phalcon\Events\Manager as EventsManager
代码部分
public/index.php:
$di[‘db‘] = function() use($di){ //log //事件管理 $eventManager = new \Phalcon\Events\Manager(); //继承了plugins的数据库sql操作类 $eventQSql = new \Mydatabase(); //附上一个侦听者 $eventManager->attach("db", $eventQSql); $db=new DbAdapter(array( "host" => "localhost", "username" => "root", "password" => "", "dbname" => "demo", "charset" => "utf8" )); //绑定事件 $db->setEventsManager($eventManager); return $db; };
app/plugins/Mydatabase.php
use Phalcon\Db\Profiler, Phalcon\Logger, Phalcon\Logger\Adapter\File as LoggerFile; class Mydatabase extends \Phalcon\Mvc\User\Plugin { protected $_logger; protected $_profiler; public function __construct() { $this->_profiler = $this->profiler;// new \Phalcon\Db\Profiler(); $this->_logger = new LoggerFile("../log/sql.log"); } public function beforeQuery() { $this->_logger->log($this->db->getSQLStatement (), Logger::INFO); $this->_profiler->startProfile($this->db->getSQLStatement()); } public function afterQuery() { $this->_logger->log($this->db->getSQLVariables (), Logger::INFO); $this->_profiler->stopProfile(); } }
每次执行sql语句的时候,发送的sql都会被记录到log文件里面。
以上是关于phalcon: plugin 结合Manager事件管理dispatcher调度控制器 监听sql日志记录或其他拦截出来的主要内容,如果未能解决你的问题,请参考以下文章
phalcon:官方多模块支models层,mode数据库配置