2013-03-06 4 views
2

У меня недавно возникла проблема с нашим сайтом. Пользователям/посетителям было отказано в подключении к базе данных. Когда я попытался войти в систему через PHPMyAdmin, и он вернулся с этим сообщением: «# 1203 - у пользователя уже есть активные подключения« max_user_connections ».Максимальное количество подключений к MySQL - ошибка кодирования?

Это общий хост, а максимальные допустимые соединения - 20. Я не могу изменить это, но на сайте обычно не более 20 в любой момент времени, и ошибка появилась около часа или двух.

Когда я спросил хозяина, в чем проблема, все отправленные обратно были такими: «Мы боимся, что это связано с плохими сценариями и заполняет все ваши выделенные соединения с базой данных (20). для проверки сценариев и данных, которые вы пытаетесь вернуть ».

Что это значит?

Это типичный кусок кода я использую:

session_start(); 
require 'include.php'; 
mysql_connect($DBhost,$DBuser,$DBpass); 
mysql_select_db("$DBName"); 

Я знаю, что информация здесь оленья кожа дать много на пути конкретных сценариев, но мне интересно, если есть проблема с подключением не закрывается? Любой, кто имеет какие-либо идеи, будет очень полезен, и я мог бы посмотреть на это. Есть ли ошибки кодирования, которые могут вызвать это? Как не следует автоматически закрыть соединение после загрузки страницы?

Спасибо заранее

+0

Скорее всего, происходит то, что соединение не освобождается при запуске PHP-кода. Не могли бы вы привести пример полного скрипта? –

+0

Чтение принятого ответа на этот вопрос даст вам некоторую справочную информацию: [Ошибка MySQL «Слишком много соединений»] (http://stackoverflow.com/questions/1202322/mysql-error-too-many-connections) – nickhar

+0

Привет, Джеймс, Спасибо за ваш ответ. Я просматривал страницы, которые, скорее всего, были доступны, когда возникла ошибка. Страница входа была одной, и при ее проверке скрипт соединяется в начале страницы, затем на полпути вниз он вызывает «mysql_connect» ($ DBhost, $ DBuser, $ DBpass); mysql_select_db («$ DBName»); " опять-таки, почему-то. Это единственная страница, которую я нашел, которая делает это. Может ли это быть проблемой? –

ответ

0

Чтобы узнать, сколько тока соединения есть, вы можете нажать на STATUS, а затем на вкладке SERVER под время выполнения информации в PhpMyAdmin. Или запустить:

mysqladmin -uroot -ppassword processlist (from command line) 

Сообщите своему хосту, что вы хотите ограничить соединения только с localhost. Я подозреваю, что вас пробовали из Интернета. Команда processlist сообщит вам, если это так.

+0

Если вы не можете найти STATUS, у вас может быть ссылка под названием «Процессы», которая должна делать то же самое. Вы также можете запустить «SHOW PROCESSLIST» в окне запросов Sql. – Bjorn

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