3

Doctrine\DBAL\Connection::ping()

被标记为@deprecated

我发现这个提交介绍了它,但没有给出关于这个方法的后继者的信息。

我想知道此功能的预期替代方案。

我应该依靠isConnected()吗?

4

1 回答 1

5

我挖得更深了,发现了这个 拉取请求

此更改的作者说:

有什么替代方法可以确保连接不会因连接超时而丢失,以便我们可以安全地执行我们的实际查询?

没有办法确保它不会丢失。即使您用来探测连接的查询成功,也不能保证真正的查询会成功。

还是执行虚拟查询并捕获 ConnectionLost 异常的解决方案?

见上文。解决方案是捕获 ConnectionLost 异常并根据查询对其进行处理。例如,重新执行 SELECT 是安全的,但重新执行 INSERT 而不首先检查数据库的当前状态是不安全的(插入行后连接可能会失败)。

因此,仅调用 aisConnected()不是很可靠,您需要执行某种真正的查询,例如:SELECT 1;希望这会对您有所帮助!

于 2021-02-02T11:54:46.830 回答