Applicazioni php veloci come la luce con la cache
Posted on 13. Sep, 2008 by Administrator in php, tutorials
Cosa è la cache?
In informatica, la cache (dal termine francese caché che significa nascosto) è un insieme di dati che viene memorizzato in una posizione temporanea, dalla quale possa essere recuperato velocemente su richiesta.
La cache serve per ridurre le chiamate a una o più pagine web perchè invece di richiamare una pagina web ad esempio php e farle eseguire include,connessioni al db,funzioni e script, richiamiamo una pagina con il risultato di qeste "chiamate" già eseguite.
La classe php
Per fare ciò che ci serve, abbiamo bisogno di una classe php che fa al caso nostro.
cache.class.php
< ?php /* * Clase PHP - Cache * www.baluart.net */ 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 cache function 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 parametro
var $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); }






Leave a reply