XLT blogas

2008-10-23

PHP cache – serverio apkrovos (CPU) mažinimas

Įrašyta kategorijoje: php — dainos @ 10:55
Tags: , , , , ,

Jei svetainė tampa labiau lankoma, o naudojama TVS nėra gerai optimizuota, ji vis labiau apkrauna serverio procesorių (CPU). Elementarus būdas dramatiškai sumažinti apkrovą – kiek įmanoma daugiau viską kešuoti (įrašyti į laikiną tekstinį failą – cache), ypač daug Mysql užklausų generuojančias TVS vietas (pvz., kiekviename puslapyje įterpiamus topus, naujausių straipsnių/nuorodų sąrašus ir pan.).
Kešavimo esmė – nustatytą laiką naudoti išsaugotą puslapio ar jo dalies kopiją. Praėjus tam laikui, kopija atnaujinama.
Kešavimui naudojamos PHP funkcijos ob_start, ob_get_contents, ob_end_flush.

Pavyzdys:
$cache_failas = “cache/failas.txt”;
$cache_laikas = 3600;
if (file_exists($cache_failas) && (time() – $cache_laikas
< filemtime($cache_failas)))
{
include($cache_failas);
}
else {
ob_start();

//php kodas, pvz paėmimas is duomenų bazes

//irasom i cache
$f = fopen($cache_failas, ‘wb’);
fwrite($f, ob_get_contents());
fclose($f);
ob_end_flush();
}

$cache_failas – failas, į kurį bus įrašoma. Jį galima sukurti iš anksto (ir atitinkamai
suchmod’inti) arba, jei nebus, jis gali būti sukurtas automatiškai (žr. apie fopen)
$cache_laikas – sekundėmis. Kas kiek laiko turi būti atnaujinama. Šiuo atveju: 3600 sek = 1 valanda

TrackBack URI

Blog at WordPress.com.