2014-01-18 1 views
2

Я получаю следующие ошибки в моем сценарии:mysqli слишком много соединений (HY000/1040) и (08004/1040) есть разница?

mysqli_connect(): (08004/1040): Too many connections 
mysqli_connect(): (HY000/1040): Too many connections 

В чем разница и как я могу решить эту проблему?

+0

«как я могу решить эту проблему» - узнать, почему они умножаются быстрее, чем они умирают? –

+1

вам может потребоваться увеличить max_connections – user1844933

+0

Вы можете отредактировать значение флага config pconnect в этом разделе. http://stackoverflow.com/a/42992918/7760664 –

ответ

3

"Too many connections" указывает, что ваш скрипт открывает по меньшей мере несколько соединений с базой данных. В принципе, для одного сервера требуется только одно соединение. Получение этой ошибки - либо неправильная конфигурация сервера (что я предполагаю, это не так, потому что max connections = zero не является опцией) или некоторые ошибки программирования в вашем скрипте.

Проверить наличие повторных подключений к базе данных (mysqli_connect). Должен быть только один сценарий (!), И обычно вам следует позаботиться о повторном использовании открытых подключений или закрыть их должным образом после выполнения сценария (mysqli_close)

1

Пока я не мог рассказать вам разницу между двумя номерами ошибок выше, я может сказать вам, что вызывает это.

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

Я думаю, что для людей очень распространено одно подключение к базе данных на каждую страницу, а также несколько запросов. Так на самом деле, что это сводится к 3 балла:

(Позвольте мне сказать вам сейчас, постоянные соединения не решит проблему.)

Если у вас есть доступ к серверу в CLI/SSH, попробуйте увеличить предел, изменив вашу конфигурацию MySQL (не забудьте перезапустить службу, чтобы изменения вступили в силу). Разумеется, это потребует больше ресурсов системы на сервере базы данных.

Если у вас есть много запросов AJAX или других внутренних подключений к базе данных, вы должны попытаться передать их одному сценарию с помощью одного вызова. Ваш сайт может совершать несколько вызовов AJAX для различных файлов PHP, которые извлекают данные MySQL, в которых для каждого из них используется полное соединение с базой данных. Вместо этого создайте один файл PHP для сбора всех данных, которые вам нужны на данной странице, этот скрипт может получить все необходимые вам данные, используя только одно подключение к базе данных.

Смежные вопросы