Witaj na naszym forum!
Nie jesteś zalogowany. (Logowanie - Rejestracja)
Użytkownik: Pamiętaj mnie:
Hasło:
Załóż nowy temat
Czytania gracza
Google
To jest wiadomość reklamowa.
Grupa: Goście
 
off-line deusx
Odczytana Wysłano: Niedziela 09:52 21.03.2010 #2
Stały użytkownik


Grupa: Użytkownicy
Posty: 205
Reputacja: Porządny użytkownik
Ostrzeżenia: 20%

Rejestracja: Poniedziałek 19:33 04.01.2010
Witam, polecam z pliku:

/includes/fuctions/ChekUser.php

Wywalić zapytanie, które aktualizuje

ip, onlinetime, useragent

Przy każdym kliknięciu.

I zamiast tam, wkleić je w

login.php
i np. w podgląd.

Można również w budynki, z mojej statystyki wynika, że podgląd oraz stocznia są najbardziej popularnymi zakładkami, więc tylko tam można zapytanie wkleić.

Przy czym user_agent można w ogóle wywalić, lub dać (1 - chyba będzie błąd bez tego).


Podsumowując:

Jedno zapytanie mniej przy każdym kliknięciu (a przynajmniej przy większości).
Jeżeli już będzie, to bez user_agent które było długie i mysql wolniej myślał.


Najlepszym rozwiązaniem by było wrzucenie chechuser do crona, i wywoływanie go co 5 sekund np. uśmiechnięty
Ostatnio zmieniano Niedziela 09:53 21.03.2010 przez deusx. Razem zmieniano 1 razy.
 
off-line hemicalyaction
Odczytana Wysłano: Niedziela 11:39 21.03.2010 #3
Administrator


Grupa: Administratorzy
Posty: 436
Reputacja: Klejnot w koronie
Ostrzeżenia: 0%

Rejestracja: Czwartek 20:42 03.07.2008
Wywalenie tego na pewno nie pomoże w żaden sposób ;>. Jeżeli masz odpowiednio założone indeksy na bazie to zapytanie powinno się wykonać bardzo szybko. Ponadto usunięcie tego spowoduje, że tak naprawdę nie będziesz wiedział czy user jest online, czy też nie (o ile bedzie siedział cały czas w zakładce, w której nie będzie tego zapytania).

BTW jak ty to chcesz do crona podpiąc? ;>
 
off-line deusx
Odczytana Wysłano: Niedziela 19:56 21.03.2010 #4
Stały użytkownik


Grupa: Użytkownicy
Posty: 205
Reputacja: Porządny użytkownik
Ostrzeżenia: 20%

Rejestracja: Poniedziałek 19:33 04.01.2010
Normalnie do crontabsa to dać i wywoływać co 5 sekund.

A czy zapytanie się wykonuje szybko czy wolno ? Nawet jeżeli szybko to zawsze jest o jedno mniej, a z podglądu choćby to wywalić zawsze mam 0,05% wydajności więcej, po co mam to trzymać w options, alliance, statystkach ? Tam ludzie krótko siedzą.

Ja u siebie to stosuje, i było widać poprawę w działaniu serwera (co prawda zrobiłem również 20 innych rzeczy, jednak każda była tak samo małostkowa)

Zresztą, nikt nic nie pisał, to coś napisałem wyszczerzony
 
off-line hemicalyaction
Odczytana Wysłano: Poniedziałek 00:31 22.03.2010 #5
Administrator


Grupa: Administratorzy
Posty: 436
Reputacja: Klejnot w koronie
Ostrzeżenia: 0%

Rejestracja: Czwartek 20:42 03.07.2008
Heh, ale jak ty chcesz CheckUser w cron'ie wywoływać? Nie rozumiem... CheckUser sprawdza aktualnie zalogowanego gracza. Żeby sprawdzić aktualnie zalogowanego gracza skrypt musi skądś wiedzieć który to gracz. W tym wypadku uzywane są ciasteczke (oryginalnie) lub sesje (o ile komus się chciało przerabiać kod). Usunięcie 'useragent' -> zgadzam się, można usunąć jednak specjalnego wzrostu wydajności nie zaobserwujesz.

Tak by the way -> profilujesz zapytania? Czyli przykładowo -> spróbowałeś w pętli wykonać powiedzmy 10000 razy to zapytanie przed zmianami i po zmianach licząc za pomocą microtime() czas wykonania całości? ;>. Jeżeli nie -> polecam. Możesz się czasami nieźle zdziwić wynikami, jednak generalnie wynik takiego profilowania jest wiarygodny.
 
off-line deusx
Odczytana Wysłano: Poniedziałek 09:39 22.03.2010 #6
Stały użytkownik


Grupa: Użytkownicy
Posty: 205
Reputacja: Porządny użytkownik
Ostrzeżenia: 20%

Rejestracja: Poniedziałek 19:33 04.01.2010
Oj się czepiasz, to można zrobić licznik kliknięć, i co dziesiąte kliknięcie będzie include checkuser. Można licznik w sesji zrobić, więc obciążenia nie będzie. uśmiechnięty Zawsze jakiś sposób się znajdzie.
Ostatnio zmieniano Poniedziałek 09:42 22.03.2010 przez deusx. Razem zmieniano 3 razy.
 
off-line hemicalyaction
Odczytana Wysłano: Poniedziałek 11:29 22.03.2010 #7
Administrator


Grupa: Administratorzy
Posty: 436
Reputacja: Klejnot w koronie
Ostrzeżenia: 0%

Rejestracja: Czwartek 20:42 03.07.2008
Się nie czepiam tylko zwracam uwagę ;>. Wiesz, równie dobrze można większość zapytań przerzucić na funkcje SQL i (jeśli się to dobrze wykombinuje) zmniejszyć ilość zapytań do bazy przy każdym odświerzeniu z 25 do np 5 ;>. Można także wyniki niektórych zapytań przechowywać w cache (np xcache, apc, memcache o ile masz odpowiednie rozszerzenia zainstalowane). Takimi zapytaniami są np: zapytanie wyciągające konfig z bazy, zapytanie wyciągające statystyki z bazy, zapytanie odczytujące ilość userów z bazy, zapytanie wyciągające ilość graczy online (możesz np ustalic sobie, żeby siedziało w cache powiedzmy 10sek) itp, itd. Na pewno zyskasz więcej niż gdybyś zmienił zachowanie się CheckUser ;>.

//EDIT: Ajj, zapomniałem o jeszcze jednym ciekawym zagadnieniu -> semafory ;>. Zainteresuj się tym. W php odpowiedzialne za semafory rozszerzenie nzywa się sysvsem.
Ostatnio zmieniano Poniedziałek 11:30 22.03.2010 przez hemicalyaction. Razem zmieniano 1 razy.
 
off-line deusx
Odczytana Wysłano: Poniedziałek 23:54 22.03.2010 #8
Stały użytkownik


Grupa: Użytkownicy
Posty: 205
Reputacja: Porządny użytkownik
Ostrzeżenia: 20%

Rejestracja: Poniedziałek 19:33 04.01.2010
Może napiszesz jakiś poradnik na ten temat?
 
off-line hemicalyaction
Odczytana Wysłano: Poniedziałek 23:59 22.03.2010 #9
Administrator


Grupa: Administratorzy
Posty: 436
Reputacja: Klejnot w koronie
Ostrzeżenia: 0%

Rejestracja: Czwartek 20:42 03.07.2008
A i napiszę jak tylko mnie "wena twórcza" dopadnie.
 
off-line deusx
Odczytana Wysłano: Wtorek 13:54 23.03.2010 #10
Stały użytkownik


Grupa: Użytkownicy
Posty: 205
Reputacja: Porządny użytkownik
Ostrzeżenia: 20%

Rejestracja: Poniedziałek 19:33 04.01.2010
Czekam z niecierpliwością
 
Google
To jest wiadomość reklamowa.
Grupa: Goście
 
8 odpowiedzi
Załóż nowy temat
Ten temat nie jest oznaczony żadnymi tagami.
Ten temat czyta w sumie 1 użytkowników, w tym 0 botów, 1 gości, 0 zarejestrowanych i 0 ukrytych użytkowników.
tego tematu nie czyta żaden zalogowany użytkownik
Przejdź do:
Przejdź do nowego forum
 
Kontakt Wersja lekka
Wtorek 03:26 07.09.2010
[ 0.50989 s | 9 SQL`s ]
powered by Callisto © 2010 Unisolutions