当使用持久连接连接数据库(以避免连接时间开销)时,PHP警告“服务器已消失”。这是我使用的代码:
$db = new mysqli("p:10.0.0.1", "user", "pass");
我看了以下问题:
还有其他一些。它们都与我的问题不完全相同:它们要么具有长期运行的脚本或查询,要么询问如何在发生此错误时自动重新连接。就我而言,这不是一个运行时间很长的脚本(它是一个连接池),也不是一个错误:这些脚本似乎运行良好,只输出此难看的警告。 PHP的连接池仅包含自超时以来的连接。
在以前的服务器上,我很少看到此警告。实际上,挂页面存在问题(现已解决),几分钟后通常会显示此警告或错误(我不记得是哪个)。我从不知道问题出在哪里,但似乎与之相关。
我想避免不必更改每个脚本,因为服务器上正在运行数百个小型应用程序(每个应用程序都是独立的,并且具有自己的数据库凭据)。在每个连接的前面添加一个@
会带来副作用,即它会抑制所有错误,而不仅仅是这个特定错误,并且感觉像是一种解决方法,而不是解决根本问题。
这仅仅是PHP中的错误,还是有解决此问题的配置设置?我看到有人建议在MariaDB方面延长超时时间,但这只是减少了我们看到警告的频率,而不是从根本上解决问题。 PHP可以不时检查其池,还是只丢弃池中的旧连接?