PHP阻止多个MySQL连接
我有一个大型的过程式php/mysql网站,它被分割成许多不同的文件。在每个文件中,我都包含我的dbconn.php,以确保数据库连接可用 它看起来像这样: index.phpPHP阻止多个MySQL连接,php,mysql,mysql-connect,php-include,Php,Mysql,Mysql Connect,Php Include,我有一个大型的过程式php/mysql网站,它被分割成许多不同的文件。在每个文件中,我都包含我的dbconn.php,以确保数据库连接可用 它看起来像这样: index.php <?php include_once ('header.php'); include_once ('nav.php'); include_once ('content.php'); include_once ('sidebar.php'); include_once ('footer
<?php
include_once ('header.php');
include_once ('nav.php');
include_once ('content.php');
include_once ('sidebar.php');
include_once ('footer.php');
?>
由于我只使用了一次include_,dbconn.php不应该再加载一次,但最近我收到了以下php警告
PHP Warning: mysqli_connect(): (HY000/1226): User 'username' has exceeded the 'max_user_connections' resource (current value: 20) in /var/www/html/dbconn.php on line 10
我的dbconn.php如下所示:
<?php
$host = "localhost";
$user = "username";
$pass = "password";
$db = "dbname";
if(!mysqli_thread_id($con)){
$con = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset($con, 'utf8');
}
unset($host,$user,$pass,$db);
?>
所以有一个双重检查。
如果已经有一个开放的mysql连接,那么该文件基本上什么也不做
我做错了什么?
为什么我会收到这个php警告,如何减少mysql连接的数量?基本上,导致问题的不是来自单个页面的不同调用。事实上,您目前有多个打开的连接 确保在连接达到目的后关闭连接
另外,尽量避免使用当前的结构,将所有与数据库相关的内容包含在一个文件中,然后在页面上只包含一次。我使用单例模式解决了这个问题。 因此,我将mysqli产品代码更改为mysqli面向对象代码 我在这里找到了模式:
查看这篇文章。。也许你也可以考虑单模式来处理数据库连接。@ DW狼:我正在与第3版进行斗争,但是我能做些什么呢?我有一种感觉,我要为这里的大量连接负责:他们说,mysqli_close没有必要。。。如果我决定手动关闭连接。。。什么时候做这件事合适?我和这个人有同样的问题:试着用一种方法,你激发所有相关的查询,然后一次性关闭连接。在~30个文件中,我使用了许多选择查询。。。我不明白我应该如何合并成一个文件。。。
<?php
$host = "localhost";
$user = "username";
$pass = "password";
$db = "dbname";
if(!mysqli_thread_id($con)){
$con = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset($con, 'utf8');
}
unset($host,$user,$pass,$db);
?>