mysqli重新连接持久连接时,如何解决“服务器已消失”警告?

时间:2019-04-06 23:32:31

标签: php mysqli mariadb

当使用持久连接连接数据库(以避免连接时间开销)时,PHP警告“服务器已消失”。这是我使用的代码:

$db = new mysqli("p:10.0.0.1", "user", "pass");

我看了以下问题:

还有其他一些。它们都与我的问题不完全相同:它们要么具有长期运行的脚本或查询,要么询问如何在发生此错误时自动重新连接。就我而言,这不是一个运行时间很长的脚本(它是一个连接池),也不是一个错误:这些脚本似乎运行良好,只输出此难看的警告。 PHP的连接池仅包含自超时以来的连接。

在以前的服务器上,我很少看到此警告。实际上,挂页面存在问题(现已解决),几分钟后通常会显示此警告或错误(我不记得是哪个)。我从不知道问题出在哪里,但似乎与之相关。

我想避免不必更改每个脚本,因为服务器上正在运行数百个小型应用程序(每个应用程序都是独立的,并且具有自己的数据库凭据)。在每个连接的前面添加一个@会带来副作用,即它会抑制所有错误,而不仅仅是这个特定错误,并且感觉像是一种解决方法,而不是解决根本问题。

这仅仅是PHP中的错误,还是有解决此问题的配置设置?我看到有人建议在MariaDB方面延长超时时间,但这只是减少了我们看到警告的频率,而不是从根本上解决问题。 PHP可以不时检查其池,还是只丢弃池中的旧连接?

我还检查了文档页面(12),但是文档或注释中都提到了此问题。

0 个答案:

没有答案