首页 > 代码库 > phalcon: plugin 结合Manager事件管理、dispatcher调度控制器 监听sql日志记录或其他拦截出来
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日志记录或其他拦截出来
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。