我有一个大型程序风格的 php/mysql 网站,它被分成许多不同的文件。在每个文件中,我都包含了我的 dbconn.php,以确保数据库连接可用。
它看起来像这样:
索引.php
<?php
include_once ('header.php');
include_once ('nav.php');
include_once ('content.php');
include_once ('sidebar.php');
include_once ('footer.php');
?>
在每个文件中,我通过 include_once 调用其他几个文件。所以我总共想出了大约 30 个不同的文件。
每个文件都以:
include_once($_SERVER['DOCUMENT_ROOT'].'/dbconn.php');
由于我使用的是 include_once,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 连接的数量?