【问题标题】:php database connection errorsphp数据库连接错误
【发布时间】:2010-03-23 11:59:06
【问题描述】:

我希望有人能快速帮助我解决我的问题。

由于我构建的网站偶尔会返回错误

警告:mysqli::mysqli() [mysqli.mysqli]: (08004/1040): 中的连接太多

警告:mysqli::query() [mysqli.query]: 无法获取 mysqli

现在起初我认为这是发生的,因为我没有在每个页面的末尾关闭连接,现在我在页面/脚本的开头得到这样的连接

$conn = new mysqli($host, $username, $password, $database);

最后打电话

$conn->close();

我还关闭了我打开的所有结果集。

查看我今天访问该站点时的日志文件并看到此错误,我大约 12 点访问,起初页面甚至无法加载,然后它给了我这个错误。在此之前,一个人在 11:30 和 10:30 左右访问,不是很拥挤。

我去过的主人非常安静,无法与他们取得联系,并且忽略了任何支持电子邮件,我想也许现在我听说他们不是很好,这可能是一个严重的问题设置共享mysql服务器?

任何想法或建议都会很棒,因为我需要解决这个问题!

提前致谢!

【问题讨论】:

    标签: php mysql mysql-error-1040


    【解决方案1】:

    听起来 MySQL 服务器被太多帐户共享,因为该错误意味着已超出服务器的 max_connections 设置。可能有其他几个高流量的客户正在占用连接(这是一个共享的 MySQL 服务器,我接受吗?)

    我相当确定 PHP 在请求结束时会自动关闭资源(尽管始终最好明确关闭您的连接等),所以我不认为是您的脚本保持连接打开。

    恐怕您需要继续使用您的托管服务提供商,或者考虑更换提供商。还要尝试记录错误发生的时间和持续时间,因为如果他们拒绝承认存在问题,您需要将其作为证据。

    您也可以将您的提供商推荐至此页面:http://dev.mysql.com/doc/refman/5.1/en/too-many-connections.html

    【讨论】:

    • 感谢您的回复......所以你不认为这是我的错! :)
    • 看起来不是这样。如果您与您的提供商取得联系,请告诉他们检查对 MySQL 服务器运行“SHOW PROCESSLIST”的结果 - 它会显示哪些连接来自哪些服务器。
    • 另外只需检查您的脚本没有创建持久连接 - 确保您的主机名不以 p: 开头(除非您想要持久连接,但您确实必须检查连接是否正在关闭/正确处理。)
    • 主机名只是'localhost',你是这个意思吗?主机现在已经取得联系,说他们有负载问题......愚蠢的共享服务器。我会认为即使使用共享服务器,您也可以指定每个数据库只能消耗 x 数量的连接,而不是让一个站点将它们全部吸干!
    • 更令人担忧的是,为什么他们在同一台服务器上同时运行 Web 和数据库,尤其是共享主机?
    猜你喜欢
    • 2015-04-23
    • 2016-06-11
    • 2020-12-12
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多