- Home
- Categorie
- Coding e Sistemistica
- PHP
- cache php
-
cache php
Salve ragazzi, mi sono imbattuto da poco nel provare una classe per la cache del mio sito web, classe che ho trovato durante una ricerca sul web ma che non sto riuscendo a capire il suo funzionamento.
In pratica se ho la pagina pippo/pelo-1196. html e voglio salvare la cache della pagina nella directory: ita/cache/-1196. html come dovrei strutturare lo script?[php]cache.class.php
< ?php
/*- Clase PHP - Cache
*/
class cache
{
var $cache_dir; // path ó ruta donde se almacena la cache
var $cache_time; // tiempo en que expira la cache (en segundos)
var $caching = true; //true, per la cache
var $cleaning = false; //true, para limpiar y actualizar
var $file = 'cache'; // percorso cartella file cachefunction iniziacache($path='',$time,$action=NULL){
global $SERVER;
$this->cache_dir = $path;
$this->cache_time = $time;
$this->cleaning = $action;
$this->file = $this->cache_dir."cache"
.md5(urlencode($_SERVER['REQUEST_URI'])); //md5
//condicional: Existencia del archivo, fecha expiración, acción
if (file_exists($this->file) && (fileatime($this->file)
+$this->cache_time)>time() && $this->cleaning == false){
readfile($this->file);
exit();
} else {
$this->caching = true;
//grabamos buffer
ob_start();
}
}function chiudicache(){
if ($this->caching){
//Recuperamos información del buffer
$data = $this->ob_get_clean2();
// mostramos información
echo $data;
//borramos cache si existe
if(file_exists($this->file)){
unlink($this->file);
}//escribimos información en cache
$fp = fopen( $this->file , 'w' );
fwrite ( $fp , $data );
fclose ( $fp );
}
}function ob_get_clean2() {
$ob_contents = ob_get_contents();
ob_end_clean();
return $ob_contents;
}
} // Fin clase Cache
?>
Quello che a noi interessa è il parametrovar $file = 'cache'; // percorso cartella file cache
dove andiamo ad impostare il percorso della cartella dove andremo a mettere i file della cache.
Funzionamento
Il funzionamento è semplice ed intuitivo, ecco un bel esempio:< ?
include('cache.class.php');
//instanziamo la cache
$cache1 = new cache();//no cache
echo "Senza cache: ". date("D M j G:i:s T Y") . "<br>";//con cache
$cache1->iniziacache('cache/',60,false);
echo "Con cache: ". date("D M j G:i:s T Y")."";//chiudicache
$cache1->chiudicache();
?>
Upgrade! Aggiornamento e cancellazione della cache
Ogni 10 min svuotiamo la cache$tempo=(time() % (10*60)); //10 min
if($tempo==0){
$rep=opendir('../cache/');
while ($file = readdir($rep)) {
if($file != '..' && $file !='.' && $file !=''){
unlink("../cache/$file");
}}
closedir($rep);
}
?>
[/php]