微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替代原则已弃用 ping()

如何解决替代原则已弃用 ping()

Doctrine\DBAL\Connection::ping()

is marked as @deprecated

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

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

我应该只依赖isConnected()吗?

解决方法

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

这个改动的作者说:

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。