Logování skoro zadarmo


29-02-2012 00:00 - Zdroj: php.vrana.cz
U hodně navštěvovaných aplikací je k nezaplacení mít čítače na jednotlivé akce, např. zobrazení článku, vložení komentáře, provedené vyhledávání, ale třeba i ty nízkoúrovňovější jako počet zavolání nějaké funkce, počet konfliktů unikátního klíče v databázi nebo třeba celkový čas sestavení stránky. Vlastně se to hodí u všech aplikací, nejen u těch hodně navštěvovaných. Monitorováním těchto čítačů (a např. automatickým posláním upozornění při jejich náhlé změně) můžeme rychle zjistit, že je něco v nepořádku. Navíc můžeme sledovat vliv změn, které v aplikaci provádíme, např.: „Mělo přesunutí tlačítka pro vložení komentáře vliv na počet nových komentářů?“ Zápis hodnot Logování těchto akcí ale samozřejmě jako každý zápis něco stojí, takže se jím často šetří. Jak logování nastavit tak, aby bylo co nejrychlejší? Potřebujeme lokální paměťové úložiště, které přežije ukončení skriptu, např. APC (ale ne třeba Memcache, které posílá data po síti). S ním už to je jednoduché: <?php /** Zvýšení hodnoty logovacího čítače * @param string v úložišti už musí existovat klíč "counter.$name" * @param int * @return bool * @copyright Jakub Vrána, http://php.vrana.cz/ */ function log_counter($name, $value = 1) { apc_inc("counter.$name", $value, $return); return $return; } // příklady použití: log_counter('searches'); log_counter('page_build_time_ms', (int) $microtime * 1000); ?> Klíč je vhodné zaregistrovat samostatně, abychom se ve funkci nemuseli zdržovat jeho vytvářením. Takto nastavené logování není o moc dražší než $counter[$name] += $value – data se zapisují v lokální paměti webového serveru, jen do paměti sdílené všemi procesy. Báli byste se v kódu použít $i++, aby se aplikace příliš nezpomalila? Já tedy ne. Čtení hodnot Teď ... - Pokračovat...
addthis





Poslední příspěvky z blogu:
php.vrana.cz



Zašlete svůj blog
Požadavky na Blog
Ochrana osobních údajů
Kontakty

This site uses Thumbshots previews