Да и так уже 500 млс поставил
Да и так уже 500 млс поставил
Есть одно решение, даже таймеров не нужно будет.Сообщение от KrutoyKrosch
Получается, что ты грубо говоря каждые 20 секунд отправляешь длинные запросы в БД на сохранение данных которые даже небыли изменены.
Не думаю, что такие значение, как:
меняются каждые 20 секунд.PHP код:
`Sex` = '%d', `Skin` = '%d', `Money`NamePlayer` = '%s', `IDInterior` = '%d', `Bought` = '%d', `Status` = '%d', `Money` = '%d', `Bank` = '%d', `NumHome` = '%d', `IDStreets` = '%d', `Сity` = '%d', `X` = '%f', `Y` = '%f', `Z` = '%f' WHERE `ID` = '%d'
`Status` = '%d', `HP` = '%f', `VehicleID` = '%d', `Color1` = '%d', `Color2` = '%d', `Paintjob` = '%d', `Tyres` = '%d', `Spoiler` = '%d', `FrontBumper` = '%d', `RearBumper` = '%d', `Nitro` = '%d', `Hydraulics` = '%d', `Engine` = '%d'
Можно сделать после каждого изменения одного из этих перечислений сохранение, но именно того, что было изменено.
Например игрок получил деньги и в том же теле делать запрос в БД
И наш запрос получился коротким и только тогда когда у игрока было изменено перечисление pMoneyPHP код:
format(gstring, sizeof(gstring),"UPDATE `players` SET `Money` = '%d' WHERE `ID`='%d'",
pInfo[playerid][pMoney], pInfo[playerid][pID]);
mysql_function_query(mysqlconnect, gstring, false, "", "");
Конечно нужно будет не много поработать, но зато не будет лишних запросов в БД.
Но, решать тебе.
Последний раз редактировалось Saibot; 30.10.2016 в 01:36.
Ну если никто ниже не напишет решения, придется сделать как ты написал
А что если два или более игроков зайдут и начнут тасовать между собой эти деньги?
Как тут без таймеров то) если хочется что то сделать мягко и без флуда таймеры точно пригодятся.
[Anticheat]___Invisible Fly Hack
[Anticheat]____Weapon/Ammo Hack
[Function]______ResetPlayerWeaponSlot
[Function]_______FIX_SetPlayerAmmo
[ServerMod]______TDM | Zombie Apokalypse
По сути кол-во запросов в цикле будет = их тасованию пока им не надоесть
Если ты про мой вариант, то цикл быстро создаст много таймеров, которые не очень вредны в таком кол-ве, далее цикл окончится и таймеры как букеты начнут раскрываться один за одним по заданному интервалу, вариант от Saibot действительно лучше будет, так как серв с моим вариантом может упасть и не успеет что то засейвить, а тут у него на каждом шагу будет сейв, просто надо уметь с толком это всё делать чтобы не дудосили потом твою бд.
- - - Добавлено - - -
Есть такие вещи в игре которые постоянно тасуются туда сюда по кол-ву вот их и придется таким образом сохранять как я расписал если это конечно же к большому кол-ву объектов/субъектов и т.п.
[Anticheat]___Invisible Fly Hack
[Anticheat]____Weapon/Ammo Hack
[Function]______ResetPlayerWeaponSlot
[Function]_______FIX_SetPlayerAmmo
[ServerMod]______TDM | Zombie Apokalypse
Можно поставить таймер на флуд в таких местах.Сообщение от vovandolg
А, каждые 20 + секунд оправлять больше 2000 (MAX_VEHICLES) запросов в БД не будет флуда? это только отправит public SaveVehicle не считая еще, SaveHome, SavePlayer и SaveApartment.
[Anticheat]___Invisible Fly Hack
[Anticheat]____Weapon/Ammo Hack
[Function]______ResetPlayerWeaponSlot
[Function]_______FIX_SetPlayerAmmo
[ServerMod]______TDM | Zombie Apokalypse
Отправлять запрос в БД после каждого изменения значения очень затратно и опасно. Можно попробовать объединить оба подхода и сохранять раз в N секунд только те данные, которые были изменены.
VVWVV (30.10.2016)
Почему же? отправляться будут краткие запросы и то когда, это нужно будет.Сообщение от ziggi
Вот пример:
Зашел игрок на сервер и встал в АФК на 1 час, за этот 1 час кроме expa и lvl больше ничего не изменялось.
Если сделать сохранение после изменение, то за это время только отправится два запроса на exp и lvl, но если будет таймер, как у автора темы, который каждые 20 секунд отправляет запросы в БД, то в итоге за один час только у этого игрока, что стоит в АФК отправится - 10.800 запросов в БД на обновление всех данных которые даже небыли за тронуты.
Если он создаст таймер для обновление, то как он узнает какие данные были изменены, что бы именно их обновить? делать кучу проверок?Сообщение от ziggi
Последний раз редактировалось Saibot; 30.10.2016 в 17:22.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)