【发布时间】:2013-03-06 10:11:10
【问题描述】:
我最近遇到了我们网站的问题。用户/访问者被拒绝连接到数据库。当我尝试通过 PHPMyAdmin 登录时,它返回以下消息:“#1203 - 用户已经拥有超过 'max_user_connections' 个活动连接。”
它是一个共享主机,显然允许的最大连接数是 20。我无法更改这一点,但该站点通常一次不会超过 20 个,并且错误出现大约一两个小时。
当我问主机问题是什么时,所有发回的都是这样的:“我们担心这与糟糕的脚本有关,并且正在填充所有分配到数据库的连接 (20)。你需要检查您尝试返回的脚本和数据资产”。
这到底是什么意思?
这是我正在使用的一段典型代码:
session_start();
require 'include.php';
mysql_connect($DBhost,$DBuser,$DBpass);
mysql_select_db("$DBName");
我知道这里的信息并没有提供太多具体脚本的方式,但我想知道是否存在连接未关闭的问题?任何有任何想法的人都会有很大帮助,我可以看看这个。 是否有任何可能导致此问题的编码错误?页面加载后连接不应该自动关闭吗?
提前谢谢你
【问题讨论】:
-
最有可能发生的是 PHP 代码运行时连接没有被释放。你能举一个整页脚本的例子吗?
-
阅读已接受的答案将为您提供一些背景信息:MySQL Error “Too many connections”
-
嗨,詹姆斯,感谢您的回复。当错误出现时,我一直在浏览最有可能被访问的页面。登录页面是一个,在检查这一点时,脚本在页面的开头连接,然后在中途调用“mysql_connect($DBhost,$DBuser,$DBpass); mysql_select_db("$DBName");"再次,出于某种原因。这是我发现的唯一一个这样做的页面。会不会是这个问题?
-
你好,尼克哈尔。谢谢,我昨晚看的时候看到了那个页面。非常好的和详细的答案。这一点很有帮助:“如果我没记错的话,max_connections 不限制您可以打开到 MySQL 服务器的连接数,而是限制可以打开到该服务器的连接总数,任何连接到它的人。”因为它让我对问题可能是什么有了一些了解。
-
只是一个更新,我已经删除了 mysql_connect() 的 double-ups,但是这个问题又发生了。我似乎找不到任何解决方法。当时只有一个人查看该网站。
标签: php mysql connection