• User Attivo

    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 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);
    }
    ?>
    [/php]