在发送到数据库之前更新每个学说查询

Tho*_*sen 1 php mysql doctrine doctrine-orm

我们正在运行一个巨大的平台,该平台具有用于多个前端的单个数据库。现在我们将尝试识别我们的慢查询,并更好地了解我们的流量来自哪个页面。

我的想法是在每个 sql 查询中注入页面名称作为注释,以便在查看数据库时能够看到它使用 SHOW FULL PROCESSLIST

在此处输入图片说明

最后它应该是这样的: /*PAGE NAME*/ SHOW FULL PROCESSLIST

如果我在 sequel pro 中这样做,那么评论似乎会被列出:

在此处输入图片说明

如何使用侦听器/订阅者注入自定义评论来更新每个学说查询?

sim*_*.ro 6

Doctrine DBAL 允许您定义自己的 Connection 类。

doctrine:
    dbal:
        wrapper_class: App\DBAL\MyConnectionWrapper
Run Code Online (Sandbox Code Playgroud)

您可以根据需要实现Doctrine\DBAL\Connection和覆盖的子类executeQuery()

class MyConnectionWrapper extends Connection
{
  public function executeQuery($sql, array $params = [], $types = [], ?QueryCacheProfile $qcp = null)
  {
    $sql = '/*PAGE NAME*/ '.$sql;
    return parent::executeQuery($sql, $params, $types, $qcp);
  }
}
Run Code Online (Sandbox Code Playgroud)