Как динамически выбирать пользователя БД среди нескольких пользователей - PullRequest
0 голосов
/ 13 января 2019

У меня возникла проблема "Соединение с базой данных превышает (макс. 30)" на моем веб-сайте в виртуальном хостинге. Чтобы избежать этого, я создал 10 пользователей БД и хочу распределить нагрузку между ними. Не могли бы вы помочь мне с эффективным способом добиться этого? Mine - это веб-приложение, основанное на платформе PHP-MySQL. Моя база пользователей также определена (около 550 пользователей).

Я использую следующий простой скрипт для подключения к БД.

$dbhost = 'localhost';
$dbuser = 'MYDBUSER';
$dbpass = 'MYPASS';
$dbname = 'MYAPPLICATIONDB';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if (!$conn) {
    die('Could not connect database.');
}

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вместо создания нового соединения для каждой операции CRUD, создайте только одно соединение с одним пользователем базы данных и поделитесь этим одним соединением со всеми операциями CRUD для сценария.

Некоторые планы хостинга на некоторых хостах вполне могут ограничить вас одним пользователем базы данных.

Создание новых соединений для каждой операции CRUD очень неэффективно. В прошлом я видел пример, когда кто-то это делал, это означало, что загрузка страниц заняла много лет. После того, как было изменено использование одного соединения с базой данных, которое было передано в сценарии, это сильно изменило время загрузки страницы, которое затем загружалось в миллион раз быстрее.

0 голосов
/ 13 января 2019

Ну, тогда вам лучше сменить учетную запись хостинга.

Решение (которое мне не очень нравится) может быть:

$dbhost = 'localhost';
$dbusers = ['MYDBUSER1', 'MYDBUSER2', 'MYDBUSER3', 'MYDBUSER4', 'MYDBUSER5'];
$dbpass = 'MYPASS';
$dbname = 'MYAPPLICATIONDB';
$conn = mysqli_connect($dbhost, array_rand($dbusers), $dbpass, $dbname);
if (!$conn) {
    die('Could not connect database.');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...