Symfony - 在数据库不可用时记录可运行的本机查询

Symfony - Log runnables natives queries when database is out

我正在开发一个提供休息网络服务的 Symfony 应用程序(使用 JSON 的简单 HTTP 请求)。 该服务检查一些规则并在两个 MySQL table 中插入几行(只写)。

出于优化原因,即使 Doctrine bundle 可用,我也使用原生 MySQL 查询(带有绑定参数)来插入此行。

我的需要是:如果出于任何原因,数据库不可用,请将 "runnables" 查询写入日志文件。

最终目的是当数据库恢复后,我希望能够直接执行数据库中的文件内容。 请注意,没有唯一约束(pk 是生成的 uuid),也没有要处理的锁或事务(简单的插入语句)。

我写了一个自定义的 SQLLogger,但是当调用 $connection->insert(...) 时,在调用记录器之前连接失败。

所以,我的问题是:有一种方法可以在没有数据库连接的情况下获得最终查询(使用绑定参数)吗?

或者我应该重写将参数绑定到查询中并在数据库不可用时自己记录的机制吗?

此致,

朱利安

由于带参数的最终查询是由数据库构建的,无法使用 PHP 构建查询并保证查询与数据库.

构建不带绑定参数的查询的唯一方法,但这显然不是一个好的做法。

所以,如果数据库不可用,我最终决定将所有 JSON(API 请求正文)存储在一个文件中。

所以当数据库恢复后,我可以重播原始 HTTP 查询,而不是重播 SQL 查询。

希望这个迟来的自我回答能对某人有所帮助。

此致。