КАК ИСПРАВИТЬ Пользователь 'user_name' превысил ресурс 'max_user_connections' (текущее значение: 30)?

0
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 + вызов функций согласно требованиям

  • 0
    закрыть соединение с MySQL после того, как вы закончите с этим?
  • 0
    Вы должны предоставить код, который вы используете, и подробную информацию о том, когда происходит эта ошибка. иначе будет сложно дать вам решение
Теги:

2 ответа

1

Есть две возможности:

  • только откройте 1 соединение с вашим приложением. Эти ошибки показывают множественное открытое соединение. 1 процесс должен открывать только 1 соединение и повторно использовать его.

  • изменить конфигурационный файл mysql, в частности https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_user_connections

1

Каждый раз, когда вы вызываете функцию 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;
}
  • 0
    это дает ту же ошибку
  • 0
    В этом случае у вас, вероятно, более 30 одновременных запросов на вашем сервере, и вы должны применить второе предложение janmyszkier (тоже)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню