php - 在发送到数据库之前更新每个学说查询
问题描述
我们正在运行一个巨大的平台,该平台具有用于多个前端的单个数据库。现在我们将尝试识别我们的慢查询并更好地了解我们的流量来自哪个页面。
我的想法是在每个 sql 查询中注入页面名称作为注释,以便在使用查看数据库时能够看到它SHOW FULL PROCESSLIST
最后它应该是这样的:/*PAGE NAME*/ SHOW FULL PROCESSLIST
如果我在 sequel pro 中这样做,那么评论似乎会被列出:
如何使用侦听器/订阅者更新每个学说查询以注入自定义评论?
解决方案
Doctrine DBAL 允许您定义自己的 Connection 类。
doctrine:
dbal:
wrapper_class: App\DBAL\MyConnectionWrapper
您可以根据需要实现一个子类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);
}
}
推荐阅读
- typescript - Typescript - 转换 Object.keys() 的返回值的更好方法是什么?
- python - GridserachCV,python 中的 make_scorer,用于特定于类的 F1
- ios - 如何在 Swift 中单击重新加载/重置按钮时在选项卡栏中重新加载项目的视图控制器
- java - 如何调用指示应该在实例上调用什么方法的传递参数
- php - 用 php 将我的 css 文件合并到一个主 css 文件中
- google-sheets - 计数空单元格,直到下一个填充单元格
- android - 如何从 FCM 后端函数调用方法通道?
- c# - C# 重用在控制台应用程序中运行 Main 方法的线程
- python - 我收到一个错误,因为 'QuerySet' 对象没有属性 'Profile' 这是什么意思以及如何解决它?
- machine-learning - 获取 K-means 聚类任务的句子向量