
mysql - počítadlo (výběr podle data)
Zdarec. Vytvořil jsem si počítadlo uživatelů na webu, ale mám tu jeden problém. Chci, aby mi to při hodnotě "dnes" vypsalo pouze ty lidi, kteří dnes doopravdy došli (je 22:05, takže lidi, kteří navštívili stránku 00:00 - 22:05).
Dostal jsem se jen k tomuto - jak to udělat tak, abych získal, co chci?
Tento code mi ukáže uživatele, kteří web navštívili v posledních 24 hodinách.
$sum = 0;
$dotaz = mysql_query("SELECT * FROM `counter` WHERE `last_change` <= date_sub(now(), INTERVAL 1 DAY)");
while ($vypis = mysql_fetch_assoc($dotaz)) {
$sum = $sum + 1;
}
A pokud máš opravdu velkou návštěvnost a v tabulce counter je hodně záznamů, pak by se měla tabulka chovat opravdu jako počítadlo se strukturou - Datum date, Pocet int
Návštěvník by ti zvednul Pocet a ty bys jej pouze vybral a zobrazil a nemusel bys pri kazde navsteve zamestnavat server vypocty
Jak to myslíte? Přesně jsem to nepochopil.
last_change mám nastavený jako TIMESTAMP a count mám nastavený jako int.
chcel tym povedat to, ze do tabulky counter nebudes insertovat kazdy vstup pouzivatela ako novy riadok, ale budes mat len dvojicu DATUM - POCET.
Pricom ked pouzivatel vojde na stranku, tak len updatnes pole POCET a inkrementujes ho o 1.
Pri citani potom uz len najdes riadok s dnesnym datumom a vypises hodnotu z pola POCET.
Ak ti bude na stranku chodit denne povedzme 10k ludi a kazdemu chces zobrazit pocet dnesnych navstev, tak vzdy budes selectovat tisice a tisice riadkov z DB co bude do par dni pomale.
Ale to je len HINT, zalezi aj od ucelu a do akej urovne potrebujes mat zalogovane, kto a kedy dosiel na stranku. V takom pripade sa da kombinovat to co robis ty (podrobne logovanie) s tabulkou kde si len inkrementujes hodnotu. Podrobne zalogovanie bude sluzit tebe a ta druha tabulka na rychle zobrazenie navstev.
Tak to taky mám. ip, count, last_change. :) Takže třeba u ip xxx.xxx.xxx.xxx mám count 3, což znamená, že uživatel s touto ip navštívil web 3x (tedy web navštívil ve 3 různých dnech).
Nemas. Ty zapisujes kazdou IP zvlast, takze kdyz ti tam prijde 10 000 navstevniku za den, budes za rok vybirat data mezi vic jak 3,5 miliony radku.
Pokud by sis krome te existujici toho udelal dalsi tabulku, kde bys mel opravdu jen pocitadlo - den a pocet, pak to budes mit neskutecne rychlejsi a nebudes zatezovat server. A tu svou velkou muzes pouzivat na nejake sve vyhodnocovani.
Dalsi vec. Co kdyz se ti tam pripoji spousta lidi od jednoho poskytovatele, kteri vystupuji ven pod jednou IP adresou? Unikatni navstevnik se nerozeznava jen podle IP adresy.