 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Мозговыносящая проблема. Перевел сервер на mysql и началось.
| |
| Крендель | Дата: Пятница, 28.10.2011, 15:47 | Сообщение # 1 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 0
Город: :дороГ
Репутация: -8
Замечания: 20%
Статус: 
| Суть проблемы: Перевел сервак на мускул. Все норм. Регает, логинит без тормозов, все быстро. Но возникла оооочень странная проблема. Представим я залогинился и появился возле отеля. Я могу писать в чат и спокойно общаться с народом НЕ ДВИГАЯСЬ!! Но стоит мне походить или побегать например 10 секунд и после этого попытаться написать что-либо в чат, то сообщение попадает в чат ровно через то кол-во времени сколько я был в движении!!..буду я например минуту бегать, то и сообщение будет минуту в чат "ползти". Я сам в шоке от этой лабуды. Вернув старую систему регистрации все стало работать нормально. бд и сервер на одном хосте. хост ru-hoster. Помогите пожалуйста! ))
生き死に
|
| |
|
|
| IInkvizitor | Дата: Пятница, 28.10.2011, 16:14 | Сообщение # 2 |
|
Советчик
Группа:
I'm V.I.P.
Сообщений: 1177
Награды: 7
Город: Санкт-Петербург
Репутация: 493
Замечания: 0%
Статус: 
| Хотя бы указал бы какой плагин и какая версия сервера....
|
| |
|
|
| Pra | Дата: Пятница, 28.10.2011, 16:30 | Сообщение # 3 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 9
Город: Северная Столица
Репутация: 211
Замечания: 100%
Статус: 
| Крендель, по моему чушь, вряд ли это связано с базой данных, так как при написание в чат никаких запросов не происходит! А то что задержка в отправке сообщения зависит от времени которое игрок находился движении, во обще идиотизм какой то. То есть, ты хочешь сказать, что стоя на месте час, задержек не будет, а если чуть чуть подвигаться они начнуться?
|
| |
|
|
| Крендель | Дата: Пятница, 28.10.2011, 16:35 | Сообщение # 4 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 0
Город: :дороГ
Репутация: -8
Замечания: 20%
Статус: 
| Quote (Pra) Хотя бы указал бы какой плагин и какая версия сервера.... gf + MySQL_Register_System_v2.1 Quote (Pra) Крендель, по моему чушь, вряд ли это связано с базой данных, так как при написание в чат никаких запросов не происходит! А то что задержка в отправке сообщения зависит от времени которое игрок находился движении, во обще идиотизм какой то. То есть, ты хочешь сказать, что стоя на месте час, задержек не будет, а если чуть чуть подвигаться они начнуться? нет. я хочу сказать что если не двигаться задержек нет, а если побегать например 10 секунд, то после этого сообщение будет отправляться с задержкой в эти самые 10 секунд...я говорю я сам в шоке от этой хни...самому кажется что это нереально, но факты есть факты...
生き死に
|
| |
|
|
| DANGER1979 | Дата: Пятница, 28.10.2011, 16:56 | Сообщение # 5 |
|
Постоялец
Группа:
I'm V.I.P.
Сообщений: 365
Награды: 5
Город: Гродно
Репутация: 557
Замечания: 0%
Статус: 
| Попробуй плюнуть в чат цыклом 20 строк в каждой по 120 символов
и не двигайся
Быстро в чате отобразиться или с задержкой в 3-5 секунд?
[UCP] Статистика сервера (MySQL) GTA:SA VirtualWorld Server - LifeSimulator [Продажа][GM] VirtualWorld v3.0.219 [FS] VW_SystemOfNeed - Система потребностей [FS] VW_SystemOfBuying - Система покупки авто [FS] VW_Speedometer - с системой расхода топлива и учёта пробега [FS] VW_CargoShip - Грузовое судно
Сообщение отредактировал DANGER1979 - Пятница, 28.10.2011, 16:57 |
| |
|
|
| Alcoholik | Дата: Пятница, 28.10.2011, 19:54 | Сообщение # 6 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Поищи левые запросы. Quote public OnPlayerUpdate(playerid){ new Float: x, Float:y, Float:z; GetPlayerVelocity(playerid,x,y,z); if(x==0 && y==0 && z==0) {} else mysql_query("Update xyu set x=%f,y=%f,z=%f where id=%d",x,y,z,playerid); } Код возможно херня, не работал с GetPlayerVelocity, на формат тоже забил
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| Крендель | Дата: Суббота, 29.10.2011, 09:40 | Сообщение # 7 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 0
Город: :дороГ
Репутация: -8
Замечания: 20%
Статус: 
| Quote (RoACh) GetPlayerVelocity Все чисто нигде нет ничего лишнего. GetPlayerVelocity не используется.
Выяснил еще одну вешь: в общем в коде OnPlayerUpdate добавил строчку Code public OnPlayerUpdate(playerid) { SendClientMessage(playerid, COLOR_LIGHTRED, "апдейт"); ......... чтобы было понятно когда обновление происходит... в игру залогинился и увидел что идет постоянное обновление аккаунта...примерно 2 раза в секунду, начал двигаться, кол-во обновлений увеличилось где-то до 5 обновлений в секунду...побежал еще большее кол-во... OnPlayerUpdate используется в следующих местах: 1. OnPlayerDisconnect 2. GameModeInitExitFunc 3. SaveAccounts 4. несколько команд..
что за глюк такой..он меня аж вымораживает ппц
生き死に
Сообщение отредактировал Крендель - Суббота, 29.10.2011, 09:54 |
| |
|
|
| ZiGGi | Дата: Суббота, 29.10.2011, 10:39 | Сообщение # 8 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Крендель, покажи весь OnPlayerUpdate. Я уверен, что как и в большинстве гф модов, там находится функция сохранения аккаунта.
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Pra | Дата: Суббота, 29.10.2011, 13:23 | Сообщение # 9 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 9
Город: Северная Столица
Репутация: 211
Замечания: 100%
Статус: 
| омг, OnPlayerUpdate - это калбэк, вызывающийся в зависимости от частоты обновлений состояний твоего персонажа, стоя на месте обновление происходит 1-2 в секунду, а то и во обще пару секунд не происходит, двигаясь - этот паблик вызывается более 30 раз в секунду... Поэтому если там у тебя есть запросы, к базе данных, то все ясно. Quote (Крендель) 1. OnPlayerDisconnect 2. GameModeInitExitFunc 3. SaveAccounts 4. несколько команд.. Смысла его вызывать вообще не виже.
Во общем убирай из апдейта все запросы.
|
| |
|
|
| Крендель | Дата: Суббота, 29.10.2011, 14:32 | Сообщение # 10 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 0
Город: :дороГ
Репутация: -8
Замечания: 20%
Статус: 
| Нашел причину. Во всем виновато количество отправляемых запросов к бд типа Code format(string, sizeof(string), "UPDATE `table_players` SET `Level` = '%d' WHERE `name` = '%s'", PlayerInfo[playerid][pLevel], playername3); mysql_query(string); их у меня около 30 штук. в итоге получается что каждую секунду сервер отправляет 30 - nn запросов. уменьшив кол-во строк с запросами вдвое, задержки прекратились. Ну и возник вопрос: можно ли как либо все запросы объеденить в один? т.е. чтобы поолучилось что-то типа такого UPDATE Code `table_players` SET `Level` = '%d' SET `AdminLevel` = '%d' SET `DonateRank` = '%d' WHERE `name` = '%s' Добавлено (29.10.2011, 14:32) ---------------------------------------------
Quote (Pra) Во общем убирай из апдейта все запросы. дык если их убрать оттуда тогда как инфо об аккаунте будет обновлятся?? или же запросы можно где-то в другом месте поместить?
生き死に
|
| |
|
|
| IInkvizitor | Дата: Суббота, 29.10.2011, 14:52 | Сообщение # 11 |
|
Советчик
Группа:
I'm V.I.P.
Сообщений: 1177
Награды: 7
Город: Санкт-Петербург
Репутация: 493
Замечания: 0%
Статус: 
| Сохранять пользователя при его выходе/вылете. Нефиг базу насиловать постоянно.
|
| |
|
|
| Pra | Дата: Суббота, 29.10.2011, 16:34 | Сообщение # 12 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 9
Город: Северная Столица
Репутация: 211
Замечания: 100%
Статус: 
| Quote (IInkvizitor) Сохранять пользователя при его выходе/вылете. Нефиг базу насиловать постоянно. +1
В OnPlayerDisconnect'е обновляешь все значения, и все...
Quote (Крендель) Ну и возник вопрос: можно ли как либо все запросы объеденить в один? т.е. чтобы поолучилось что-то типа такого UPDATE UPDATE `таблица` SET (`поле1`,`поле2`...`поле10`) VALUES('зачение1','значение2'...'значение10') Честно говоря не уверен в правильности данного запроса, но попробуй) Ну или же используй AND UPDATE `таблица`SET `поле` = 'зачение' AND `поле` = 'зачение' AND ... `поле` = 'зачение'
Сообщение отредактировал Pra - Суббота, 29.10.2011, 16:36 |
| |
|
|
| IInkvizitor | Дата: Суббота, 29.10.2011, 16:53 | Сообщение # 13 |
|
Советчик
Группа:
I'm V.I.P.
Сообщений: 1177
Награды: 7
Город: Санкт-Петербург
Репутация: 493
Замечания: 0%
Статус: 
| Pra, забыл WHERE, твой запрос изменит все записи в таблице Пример Code UPDATE 'users' SET email='penis@vagina' AND name='shit' WHERE nick='admin';
|
| |
|
|
| Alcoholik | Дата: Суббота, 29.10.2011, 16:59 | Сообщение # 14 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Quote (IInkvizitor) Сохранять пользователя при его выходе/вылете. Нефиг базу насиловать постоянно. Это можно было бы делать, если бы самп был бы отлично устойчивым, либо хостер нормальный. Помню на pawn.su хостился, у меня сервер падал, не вызывая каллбека дисконнекта, что приводило к тому, что нихера не сохранялось. Суппорт говорил смотреть баги в моде) В общем получилось так, что падали все сервера, данные не только слетали, но и некоторые удалялись) Найдя последствия, я сделал багофикс, а на остальных серверах, которые были на pawn.su делал себе беспалевные админки) Сейчас у меня сервер стоит на машине, на которой стоит пара серверов самп, сайт и серв кс вроде, всё работает замечательно, но раз в 40 минут я отправляю запрос на сохранение всех аккаунтов онлайн игроков. Так надежнее. В апдейт ставить, конечно это жестоко) Вспомнил как дамп сайта импортировал в бд, дамп почти пустого форума ипб, импортнул, серв хостера лёг
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| IInkvizitor | Дата: Суббота, 29.10.2011, 17:01 | Сообщение # 15 |
|
Советчик
Группа:
I'm V.I.P.
Сообщений: 1177
Награды: 7
Город: Санкт-Петербург
Репутация: 493
Замечания: 0%
Статус: 
| RoACh, тогда лучше сохранять акк вместе с пейдеем, чтобы не плодить таймеров.
|
| |
|
|
|
 |
|
 | |
| |
|