【问题标题】:alternative for doctrine deprecated ping()不推荐使用的 ping() 的替代方案
【发布时间】:2021-04-26 19:57:03
【问题描述】:

Doctrine\DBAL\Connection::ping()

is marked as @deprecated

我找到了介绍它的this commit,但没有提供有关此方法的后继者的信息。

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

我应该只依赖isConnected()吗?

【问题讨论】:

    标签: php doctrine doctrine-dbal


    【解决方案1】:

    我挖得更深了,发现了这个 pull request

    此更改的作者说:

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

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

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

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

    所以,只调用isConnected() 不是很可靠,你需要执行某种真实的查询,例如:SELECT 1; 希望这对你有帮助!

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 2012-03-03
      • 1970-01-01
      • 2021-10-23
      • 2021-03-28
      • 1970-01-01
      • 2015-10-11
      • 2018-03-21
      • 2022-01-20
      相关资源
      最近更新 更多