Здравствуйте,столкнулся с такой проблемой,по какой-то причине часов через 10 после рестарта не появляется окно логина,то есть не выполняется функция проверки зареган ли игрок
Вот запрос
public OnPlayerRequestClass(playerid, classid) { new query[128]; new condisname[MAX_PLAYER_NAME]; GetPlayerName(playerid, condisname, sizeof(condisname)); new name[25]; mysql_real_escape_string(condisname, name); format(query, sizeof(query), "SELECT * FROM `players` WHERE `Name` = '%s'", name); mysql_query_callback(playerid, query, "OnPlayerRegCheck", -1, 1); return true; }
Здравствуйте,столкнулся с такой проблемой,по какой-то причине часов через 10 после рестарта не появляется окно логина,то есть не выполняется функция проверки зареган ли игрок
Один из возможных вариантов - потеря соединения с сервером БД.
Нашёл источник проблемы,хост сервера и бд на игрохосте.Примерно раз в сутки сервер теряет подключение к БД,то есть БД как зависает,при попытке зайти в панель управления mysql - вылетает ошибка #1226 Невозможно подключиться к серверу MySQL.Так-же из логов mysql [17:00:57] ProcessQueryThread() - Reconnecting to the MySQL in the background thread. [17:00:57] CMySQLHandler::Connect() - User 'db1df55' has exceeded the 'max_user_connections' resource (current value: 15) (error ID: 1226).
Автор: Борис Дата: 2013-04-14 18:36:23 Здравствуйте!
Ошибка - достигнуто максимальное количество одновременных подключений для пользователя. Если Вы периодически открываете новые подключения к БД - не забывайте закрывать старые. Либо, используйте единое постоянное подключение к БД, что является оптимальным вариантом
Автор: Владислав Дата: 2013-04-14 18:37:54 В моде не используется больше подключений.Только при запуске сервера mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_DB,MYSQL_PASS);
Автор: Борис Дата: 2013-04-14 18:56:26 На данный момент открыто 1 соединение. На момент невозможности подключения было открыто 15 соединений. При перезагрузке сервера соединения(не закрытые модом) закрываются ОС, после чего на стороне сервера БД. К сожалению, я не могу помочь в выяснении логики мода по их открытию. Возможно, где-то в нем есть настройка "использовать постоянное подключение".
Посмотреть текущий список подключений можно выполнив запрос show processlist в т.ч., через phpMyAdmin
Так вот,подключение к бд я произвожу в public OnGameModeInit(),так-же стоит проверка при перезагрузке/включении сервера на уже существующее подключение(mysql_ping()),то есть по идее никак 2 подключения никак не сделать,однако выполняя запрос show processlist через phpmyadmin на данный момент уже создано 3 подключения со стороны игрового сервера(хотя перезагрузки сервера ещё не было),как так понять не могу.Не знаю что и делать....
Сообщение отредактировал vlad20 - Понедельник, 15.04.2013, 01:33
Помог toneysix,всё дело было в плагине(возможно мои две левые руки использовали функции неправильно),кароче говоря поставил Mysql plugin r5 и проблема решилась.Тему можно закрыть.