Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP阻止多个MySQL连接_Php_Mysql_Mysql Connect_Php Include - Fatal编程技术网

PHP阻止多个MySQL连接

PHP阻止多个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/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_,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);
?>