Diskuse: Statistika přístupů v PHP – počet unikátních návštěvníků
Trochu kazi dojem to ze ta ukazkova aplikace na vas vyhodi po cely strance hromady chyb "Warning: Division by zero in /www/..."
Vazeny pane,
proveril jsem opetovne vsechny odkazy v clanku a vsechny pracuji spravne. Neslo o nejaky docasny problem?
proveril jsem opetovne vsechny odkazy v clanku a vsechny pracuji spravne. Neslo o nejaky docasny problem?
Zcela jiste slo pouze o docasny problem.
Vzhledem k tomu ze jsem to cetl tesne po pulnoci a byl jsem jeden z prvnich lidi co to tedy cetli a ve statistikach byli same 0 (zadny prisup na sledovanou stranku) usuzuji ze pri vypoctech % neni osetrena varianta kde se deli 0 proto to asi take hlasilo ten warning.
Chtel jsem tim upozornit prave na tuto chybu, ktera je sice temer nepodstatna, ale je tam.
Vzhledem k tomu ze jsem to cetl tesne po pulnoci a byl jsem jeden z prvnich lidi co to tedy cetli a ve statistikach byli same 0 (zadny prisup na sledovanou stranku) usuzuji ze pri vypoctech % neni osetrena varianta kde se deli 0 proto to asi take hlasilo ten warning.
Chtel jsem tim upozornit prave na tuto chybu, ktera je sice temer nepodstatna, ale je tam.
Ach ano, tohle jste mel na mysli. Pak neslo o server, ale o to, ze jsme pro jednoduchost a prehlednost prikladu neosetrovali ve skriptech nulove stavy.
Opet prosim o pochopeni stavu veci - Interval bezi na ASP, proto jsou priklady v PHP na jinem serveru. Tzn. je-li z technickych duvodu tento druhy server restartovan, coz se v tuto "pulnocni" hodinu (kdy jste psal prispevek) muze zcela dobre stat, je priklad na malou chvili nedostupny, i kdyz Interval jede. Jedna se vzdy ale radove o desitky sekund.
Já chápu, že je na to třeba více času, ale přece jenom už by mohl vyjít. Krom toho to vypadá na velmi slušný článek a téma je velmi zajímavé.
--AdmiX
--AdmiX
Jojó, kolega přede mnou měl pravdu, bude nějaký další díl?
prave ho edituji, vyjde zitra :o)
Ahoj,
jenom malá výtka - proč zjišťujete například počty unikátních IP adres způsobem přes mysql_num_rows? Vždyť to jde taky velice jednoduše přes count, a při větším počtu dat to bude (zejména paměťově) podstatně méně náročné. Stačí malá modifikace:
SELECT DISTINCT ip FROM access WHERE $sql_access_date
upravím na
SELECT count(DISTINCT ip) FROM access WHERE $sql_access_date
a je to. Notabene tam mohu využívat i group by, a dělat statistiky podle hodin, dní měsíce, dní týdne, a podobně...
Ale jinak je to pěkný článek, inspiroval mě jak upravit svůj skript na statistiky.
jenom malá výtka - proč zjišťujete například počty unikátních IP adres způsobem přes mysql_num_rows? Vždyť to jde taky velice jednoduše přes count, a při větším počtu dat to bude (zejména paměťově) podstatně méně náročné. Stačí malá modifikace:
SELECT DISTINCT ip FROM access WHERE $sql_access_date
upravím na
SELECT count(DISTINCT ip) FROM access WHERE $sql_access_date
a je to. Notabene tam mohu využívat i group by, a dělat statistiky podle hodin, dní měsíce, dní týdne, a podobně...
Ale jinak je to pěkný článek, inspiroval mě jak upravit svůj skript na statistiky.
Z tohoto článku jsem sice ochopil princip, ovšem máte to tak skvěle rozepsané, že nevím, který kód patří do kterého souboru, takže sprovoznění této ukázky je něco jako skládat puzzle.
Schválně do kterého souboru patří tento kód?
// zabráníme cashování
Header("Cache-Control: no-cache");
Header("Pragma: no-cache");
Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
// připojení k databázi
require("db.php");
// DATUM
$date = Date("Y-m-d H:i:s");
// aktuální datum a čas
Schválně do kterého souboru patří tento kód?
// zabráníme cashování
Header("Cache-Control: no-cache");
Header("Pragma: no-cache");
Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
// připojení k databázi
require("db.php");
// DATUM
$date = Date("Y-m-d H:i:s");
// aktuální datum a čas
Slepovat aplikaci dohromady je opravdu nesmysl, ale mrknete do posledniho dilu - kompletni zdrojove kody si tam muzete stahnout.




