SQL 监听
优质
小牛编辑
142浏览
2023-12-01
说明
要使用 SQL 监听功能,必须先开启,并且不推荐在生产环境使用。
开启方式是在配置文件中的 beans
中加入:
'DbQueryLog' => [
'enable' => true,
]
事件
SQL 执行
事件名:IMI.DB.EXECUTE
每一个 SQL 语句执行后都会触发该事件。
示例:
<?php
namespace Imi\Test\Component\Db\Listener;
use Imi\Bean\Annotation\Listener;
use Imi\Db\Event\Param\DbExecuteEventParam;
use Imi\Event\EventParam;
use Imi\Event\IEventListener;
use Imi\Log\Log;
/**
* @Listener("IMI.DB.EXECUTE")
*/
class DbExecuteListener implements IEventListener
{
/**
* 事件处理方法.
*
* @param DbExecuteEventParam $e
*
* @return void
*/
public function handle(EventParam $e)
{
Log::info(sprintf('[%ss] %s', round($e->time, 3), $e->sql));
}
}
准备 SQL 语句
事件名:IMI.DB.PREPARE
每一个 SQL 语句准备后都会触发该事件。
示例:
<?php
namespace Imi\Test\Component\Db\Listener;
use Imi\Bean\Annotation\Listener;
use Imi\Db\Event\Param\DbPrepareEventParam;
use Imi\Event\EventParam;
use Imi\Event\IEventListener;
use Imi\Log\Log;
/**
* @Listener("IMI.DB.PREPARE")
*/
class DbPrepareListener implements IEventListener
{
/**
* 事件处理方法.
*
* @param DbPrepareEventParam $e
*
* @return void
*/
public function handle(EventParam $e)
{
Log::info(sprintf('[prepare] %s', $e->sql));
}
}