Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]GROUP BY a datestamp
Forum PHP.pl > Forum > Przedszkole
v1t4n
Witam.

Chce zrobic sobie piekne statystyki logowan i problem w tym ze musze sciagnac z bazy ilosc logowan na kazdy dzien. Oczywiscie w trakcie kazdego logowania zapisywany jest w bazie zwrot z mktime (datestamp).

Mam 2 pomysły, jednak nie wiem na ile beda zoptymalizowane.

Kod 1:
  1. SELECT COUNT(`id`), CEIL(`date` / 86400) AS `t_day` FROM `login_logs` GROUP BY `t_day` ASC

Czas wykonania przy 1000 powtorzen: 67.0679588318

Kod 2:
  1. SELECT COUNT(`id`), FROM_UNIXTIME(`date`, '%Y%m%d') AS `t_day` FROM `login_logs` GROUP BY `t_day` ASC

Czas wykonania przy 1000 powtorzen: 67.9778862

Niby nie ma wielkiej roznicy, ale chcialbym sie podeprzeć Waszym doswiaczeniem lub ewentualnie dowiedziec sie jak mozna to zrobic w inny sposob.
Z góry dziekuje.
outsider
Cytat
ilosc logowan na kazdy dzien

To nie lepiej do pliku .txt zapisac ? Bo rozumiem ze ma byc kazda godzina logowania w danym dniu + ilosc (count). Lepiej by wygladalo niz w bazie na okreslona ilosc dni. Np. po odczytaniu dat z pliku, "przeterminowane" daty mozna skasowac robiac zapias do pliku bez nich.
v1t4n
@*OuTSideR*: nie wiem czy w pliku byloby mi tak wygodnie tego szukac. W bazie mam jeszcze IP, id usera i przegladarke - przeszukiwanie bazy wzgledem takich kryteriow jest znacznie latwiejsze.
outsider
Jak bys mial takie dane w pliku:
Kod
2009-04-22 13:55:54 192.45.77.183
2009-03-22 22:55:54 83.45.77.12

wystarczy
  1. <?php
  2. $file = file('baza/'.$id_usera.'.txt');
  3. $ip = array();
  4. for($i=0 ; $i < count($file) ; $i++) {
  5.   $dane = explode(' ', $file[$i]);
  6.   $ip[] = $dane[2];
  7.   ...
  8. }
  9. $ilosc_logowan = count($file);
  10. ?>


i masz wszystkie dane, no i jeszcze uwzglednic tylko dzisiejsze daty smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.