[5.9l] Optymalizacja połączeń z bazą
sebul
29.10.2011
Po dodaniu tego fixa do swojego moda, plugin będzie wysyłał o 1 zapytanie do bazy od gracza mniej, czyli przy 32 slotach, będzie to aż o 32 zapytań mniej, do tego nowym graczom nie będą się tworzyć od razu wszystkie klasy, no i ogólnie nowy kod jest czytelniejszy
FIX NIE WYMAGA RESETU LVLI I EXPA!
INSTRUKCJA
Polecam także wgranie tego fixa (już po wykonaniu fixa z tego tematu):
- http://amxx.pl/topic...wanie-sie-klas/
czyli szukamy
i zamieniamy na
Jeśli chcesz pozbyć się niepotrzebnych wpisów z bazy, to wykonaj takie zapytanie (np. w phpMyAdmin)
Po dodaniu fixa nie dodawać:
- http://amxx.pl/topic...zie-nowy-gracz/
- http://amxx.pl/topic...resetu-exp-sql/ (także już nie potrzebne, po tym fixie wystarczy kolejno dodawać nowe klasy)
Jeśli ktoś się nie zna, nie powinien także dodawać:
- http://amxx.pl/topic...klas-nowe-menu/
- http://amxx.pl/topic...do-diablo-moda/
Proszę na razie nie wgrywać, kodu jest dużo, więc ciężko to tak za jednym razem ogarnąć, możliwe, że jeszcze o czymś zapomniałem, więc muszę to przetestować na czystym modzie. Oczywiście jeśli ktoś chce, może mi w tym pomóc ;]
Plik z instrukcją:
instrukcja.txt 24,3 KB 327 Ilość pobrań
Użytkownik sebul edytował ten post 12.11.2011 11:02
FIX NIE WYMAGA RESETU LVLI I EXPA!
INSTRUKCJA
Spoiler
Polecam także wgranie tego fixa (już po wykonaniu fixa z tego tematu):
- http://amxx.pl/topic...wanie-sie-klas/
czyli szukamy
formatex(q_command, 511, "CREATE TABLE IF NOT EXISTS `%s` (`nick` VARCHAR(48), `ip` VARCHAR(32), `sid` VARCHAR(32), `klasa` INT(2), `lvl` INT(3) DEFAULT 1, `exp` INT(9) DEFAULT 0, `str` INT(3) DEFAULT 0, `int` INT(3) DEFAULT 0, `dex` INT(3) DEFAULT 0, `agi` INT(3) DEFAULT 0) DEFAULT CHARSET `utf8` COLLATE `utf8_general_ci`", g_sqlTable);
i zamieniamy na
new typ_primary[5];
switch(get_cvar_num("diablo_sql_save")) {
case 0: typ_primary = "nick";
case 1: typ_primary = "ip";
case 2: typ_primary = "sid";
default: typ_primary = "nick";
}
formatex(q_command, 511, "CREATE TABLE IF NOT EXISTS `%s` (`nick` VARCHAR(48), `ip` VARCHAR(32), `sid` VARCHAR(32), `klasa` INT(2), `lvl` INT(3) DEFAULT 1, `exp` INT(9) DEFAULT 0, `str` INT(3) DEFAULT 0, `int` INT(3) DEFAULT 0, `dex` INT(3) DEFAULT 0, `agi` INT(3) DEFAULT 0, PRIMARY KEY (`%s`, `klasa`)) DEFAULT CHARSET `utf8` COLLATE `utf8_general_ci`", g_sqlTable, typ_primary);
Jeśli chcesz pozbyć się niepotrzebnych wpisów z bazy, to wykonaj takie zapytanie (np. w phpMyAdmin)
DELETE FROM `nazwa_tabeli` WHERE `exp`='0'Oczywiście zamiast nazwa_tabeli, wpisz swoją nazwę tabeli jaką masz w bazie.
Po dodaniu fixa nie dodawać:
- http://amxx.pl/topic...zie-nowy-gracz/
- http://amxx.pl/topic...resetu-exp-sql/ (także już nie potrzebne, po tym fixie wystarczy kolejno dodawać nowe klasy)
Jeśli ktoś się nie zna, nie powinien także dodawać:
- http://amxx.pl/topic...klas-nowe-menu/
- http://amxx.pl/topic...do-diablo-moda/
Plik z instrukcją:
instrukcja.txt 24,3 KB 327 Ilość pobrań
Użytkownik sebul edytował ten post 12.11.2011 11:02
Gh0st
29.10.2011
32 zapytania to bardzo sporo
Jeżeli IP.B na tak zawansowany skrypt wykonuje ~8 zapytań na stronie głównej
Jeżeli IP.B na tak zawansowany skrypt wykonuje ~8 zapytań na stronie głównej
sebul
29.10.2011
Instrukcja poprawiona i przetestowana na czystym modzie, więc powinno być już wszystko ok ;]
M@nkovsky 29.10.2011
Czegoś takiego właśnie nam brakowało. Powiedz aby czy wymagany jest reset bazy do tego czy sie jakso pokryja
sebul
29.10.2011
U siebie mam co prawda jeszcze trochę inną wersję, ale jest to praktycznie to samo i jakoś wszystko normalnie śmiga bez errorów, itp. Tylko jak ktoś ma jeszcze staty www do moda, to wtedy trzeba w paru miejscach trochę pliki edytować.
Użytkownik sebul edytował ten post 29.10.2011 16:38
Użytkownik sebul edytował ten post 29.10.2011 16:38
sebul
29.10.2011
Czyli jak widać nie trzeba resetu, powinno wszystko normalnie działać.Po dodaniu fixa nie dodawać:
- [Tutorial] Klasa gdy wejdzie nowy gracz - AMXX.pl: Support AMX Mod X
- [5.9l] Nowa klasa bez resetu exp (SQL) - AMXX.pl: Support AMX Mod X (także już nie potrzebne, po tym fixie wystarczy kolejno dodawać nowe klasy)
DarkGL
29.10.2011
za poradnik + ale da się to zrobić jeszcze lepiej wymaga to jednak dużo głębszej edycji moda
sebul
29.10.2011
No wiem, że na pewno się da to zrobić lepiej, ale akurat ja już tak dobrze tego nie ogarniam. U siebie wykorzystałem jeszcze w wczytywaniu get_gametime() i warunek, żeby sprawdzał aby nie było zbyt wiele zapytań w tym samym czasie, może niezbyt odpowiedni sposób do tego, ale tylko to mi przyszło do głowy ^ ^
Stachuu :D ??
29.10.2011
a jak to zwiększa szybkość wczytywania sie klasy
np na xaa.pl
porównywalne choć po części z unixtrom ?
np na xaa.pl
porównywalne choć po części z unixtrom ?
::Gogiel::
31.10.2011
WoW Sebul jak by to ując znacznie to przyspieszyło działanie
Wielkie dzięki LECI +
A mimo, ze mam frakcje dałem radę
A i odpowiedź co do bazy na xaa.pl Fakt test odbył się tylko przy 3 graczach ale śmiga po 4 sekundach i ładuje poziomy bez probemów.
Wielkie dzięki LECI +
A mimo, ze mam frakcje dałem radę
A i odpowiedź co do bazy na xaa.pl Fakt test odbył się tylko przy 3 graczach ale śmiga po 4 sekundach i ładuje poziomy bez probemów.
sebul
02.11.2011
Do pierwszego postu dodałem zapytanie do bazy, które usunie nie potrzebne wpisy z bazy.
::Gogiel::
02.11.2011
Sebul, jesteś wielki
Użytkownik ::Gogiel:: edytował ten post 02.11.2011 18:30
Użytkownik ::Gogiel:: edytował ten post 02.11.2011 18:30
Gh0st
02.11.2011
Jeśli chcesz pozbyć się niepotrzebnych wpisów z bazy, to wykonaj takie zapytanie (np. w phpMyAdmin)
Jeżeli np gram na klasie mag , a na klasie palladyn mam 0 expa to jeżeli wykonam to zapytanie to usunie mi rekord związany z klasą palladyn. Ale po jakimś czasie chce znów grać na klasie palladyn. i nie będzie tej klasy w bazie a co za tym idzie klasa na serwerze nie będzie działać, czy dobrze mówie.
Czy raczej po wybraniu klasy ta klasa utworzy się sama
sebul
02.11.2011
Przy wyborze klasy jest sprawdzane czy dana klasa jest w bazie, jeśli jej nie będzie, to ją utworzy.