function getDB() {
$server_name = "localhost";
$dbname = "db_name";
$user_name = "root";
$password = "12345678";
$dbConnection = new PDO("mysql:host=$server_name;dbname=$dbname",
$user_name, $password);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbConnection->exec('SET NAMES utf8');
return $dbConnection;
}
есть какая-то функция
function one(){
$db = getDB();
// after some mysql query
$db = null;
}
function two(){
$db = getDB();
// after some mysql query
$db = null;
}
есть 50 + вызов функций согласно требованиям
Есть две возможности:
только откройте 1 соединение с вашим приложением. Эти ошибки показывают множественное открытое соединение. 1 процесс должен открывать только 1 соединение и повторно использовать его.
изменить конфигурационный файл mysql, в частности https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_user_connections
Каждый раз, когда вы вызываете функцию getDB
эта функция будет устанавливать новое соединение с базой данных. Это быстро складывается. В 99,999% случаев использования лучше использовать это соединение. Один из способов достижения этой цели - использование статической переменной.
function getDB() {
static $dbConnection = null; // $dbConnection will be 'remembered', only first time it will be null
if ($dbConnection === null) {
$server_name = "localhost";
$dbname = "db_name";
$user_name = "root";
$password = "12345678";
$dbConnection = new PDO("mysql:host=$server_name;dbname=$dbname",
$user_name, $password);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbConnection->exec('SET NAMES utf8');
}
return $dbConnection;
}