私は、多くの異なるファイルに分割されている大規模な手続き型の php/mysql Web サイトを持っています。各ファイル内に、dbconn.php を含めて、db 接続が利用できるようにします。
次のようになります。
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 を介して他のいくつかのファイルを呼び出します。したがって、合計で約 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 接続の量を減らすにはどうすればよいですか?