skanuj0387 (3)

skanuj0387 (3)



Rozdział 15. ♦ Generowanie statystyk 403

działania addStatRecord będzie wartość 0. Jeśli natomiast wywołanie mysq1_query zakończy się sukcesem, wynikiem działania addStatRecord będzie wartość zwrócona przez funkcję mysql_insert_id.

Funkcja mysql_in$ert_id zwraca, wygenerowany automatycznie w kolumnie typu AUT0_ INCREMENT, identyfikator ostatnio wprowadzonego rekordu. Dzięki temu dowiemy się, jaki identyfikator został nadany wierszowi wprowadzonemu przez ostatnio wykonane zapytanie. Zapamiętanie tej wartości będzie bardzo ważne, o czym przekonamy się w dalszej części rozdziału.

Napiszemy teraz funkcje, które pozwolą na pobranie danych określających, ilu użytkowników odwiedziło w danym czasie nasz serwis. Pierwsza funkcja o nazwie getKnownUsers określi liczbę zarejestrowanych użytkowników, natomiast druga, getAl 1 Users — liczbę niezarejestrowanych użytkowników (ściślej użytkowników, którzy się nie zalogowali). Zacznijmy od funkcji getKnownUsers. Jej zadaniem będzie wykonanie zapytania SQL, które pobierze żądaną przez nas informację z bazy, oraz zwrócenie wyniku tego zapytania.

Funkcja będzie przyjmowała jeden argument o nazwie timeout, określający czas (w minutach), którego ma dotyczyć zliczanie liczby osób załogowanych na stronie. Gdybyśmy zatem chcieli się dowiedzieć, ile osób było na witrynie w ciągu ostatnich pięciu minut, funkcji należałoby przekazać wartość 5. Aby pobrać taką informację z bazy, należy po prostu policzyć liczbę wierszy w tablicy Stats, które w kolumnie Data zawierają czas nie starszy niż timeout minut oraz które w kolumnie Userld zawierają wartość różną od zera (jak pamiętamy, użytkownik o identyfikatorze 0 oznacza osobę, która się nie zalogowała na stronie). Ten drugi warunek jest bardzo prosty, przybierze on postać: Userld o 0

Pierwszy warunek sprawi nam nieco więcej kłopotu. Powinien mieć schematyczną postać:

Data > Czas_bieżący - timeout minut

Pytanie, jak określić Czas_bieżący - timeout minut? Na szczęście SQL oferuje nam funkcję NOWO, pobierającą aktualny czas (wykorzystywaliśmy ją już w funkcji addStatRecord) oraz funkcję DATE_SUB, która potrafi odjąć od dowolnej daty dowolny czas. Jej wywołanie ma schematyczną postać:

DATE_SUB(0ata. INTERVAL Ile Typ)

gdzie Data określa datę i czas, od których zostanie odjęta wartość wskazywana przez Ile, natomiast Typ określa jednostkę czasu, który będzie odejmowany. Argument Typ może przyjmować wartości przedstawione w tabeli 15.1.

Jak łatwo się domyślić, funkcja DATE_SUB jest właśnie niezbędna do pierwszego warunku. Będzie on miał w związku z tym postać:

Data > DATE_$UB(NOWO. INTERVAL ttimeout MINUTĘ)

Całe zapytanie będzie natomiast wyglądało następująco:

SELECT C0UNT(*) FROM STATS WHERE Data > DATĘ SUBINOWO. INTERVAL Stimeout MINUTĘ) AND Userld o 0


Wyszukiwarka

Podobne podstrony:
skanuj0393 (2) Rozdział 15. ♦ Generowanie statystyk 409 Kod wyświetlający część główną został przeds
skanuj0397 (3) Rozdział 15. ♦ Generowanie statystyk 413 Modyfikacji uległa funkcja checkPass. Przede
skanuj0403 (2) Rozdział 15. ♦ Generowanie statystyk 419 else{ Squery "WHERE} $query "Stats
skanuj0383 (2) Rozdział 15. ♦ Generowanie statystyk ♦    4 — dla przeglądarek Mozilla
skanuj0407 (2) Rozdział 15. ♦ Generowanie statystyk 423 ♦    vi sitsStats — pobierają

więcej podobnych podstron