class php_cache{
var $durata;
var $cache_url;
var $nome_pagina;
/*
Costruttore - i parametri sono:
1) i minuti di vita della cache
2) il percorso della cartella di cache
*/
function __construct($minuti,$cartella) {
$this->durata = intval($minuti) * 60;
$this->cache_url = rtrim($cartella,'/').'/';
}
// Funzione di start della cache
function start() {
$this->nome_pagina = $this->cache_url.''.$this->paginaCorrente();
if (file_exists($this->nome_pagina) && ((time() - $this->durata) < filemtime($this->nome_pagina)))
{
echo file_get_contents(md5($this->nome_pagina));
exit;
}else{
ob_start();
}
}
// Funzione di chiusura della cache
function stop() {
$file = fopen($this->nome_pagina, 'w');
fwrite($file, ob_get_contents());
fclose($file);
ob_end_flush();
}
// Metodo che restituisce il nome della pagina [eventuali parametri compresi]
function paginaCorrente() {
$pagina_corrente = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$pezzi = explode('/',$pagina_corrente);
$pagina_corrente = $pezzi[count($pezzi)-1];
return md5($pagina_corrente);
}
}
parametri da mettere prima e dopo
$cache = new php_cache(10,'cache/');
$cache->start();
// segue il codice php/html
// ...
// ...
$cache->stop();