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);
}
 

Correlati

Leave a reply