• User Attivo

    Php Cache

    Salve ragazzi, sono alle prese con il mio sito e sto cercando di realizzare uno script in php per la cache in modo da aiutare il server nel momento in cui un elevato numero di utenti richiedono tutti la stessa pagina ed evitando quindi ogni volta di generare le query su un database. In rete ho trovato l'esempio riportato, la mia pagina in cui c'è un numero sostanziale di query si chiama prodotto.php , la directory in cui voglio salvare la pagina cache è /ita/cache/ (alla quale ho già settato i permessi 777)

    Mi chiedo c'è qualcuno disposto ad aiutarmi a capire come impostare il codice e come implementarlo nel mio caso specifico, dove piazzare il codice sottostante ad esempio e come renderlo performante.
    Frazie anticipatamente.

    [php]
    <?php
    // Una funzione da chiamare che imposti e maneggi l' output della cache:
    // Il primo parametro opzionale riguarda quanti secondi devono trascorrere
    // prima che la pagina venga ricreata (impostato di default ad 1 ora)
    function cache_page($refresh = 3600) {
    // Prima di tutto scegliere il nome. Poi si usa sha1() per convertirla
    // in una stringa da 40 caratteri:
    $hash = sha1($_SERVER['PHP_SELF'] . '|G|' . serialize($_GET) .
    '|P|' . serialize($_POST));

    // Creare la path dove trovare il file. In questo caso sarà posto in una
    // sottodirectory chiamata 'cache', interna alla cartella di questa libreria.
    $file = dirname(__FILE__) . '/cache/' . $hash;
    
    // Fatto ciò si controlla se l' orario di ultima modifica
    // è minore di quello corrente sommato all' orario di aggiornamento
    if ((time() - @filemtime($file)) < $refresh) {
      // Tutto è pronto, ritorna il file e si esce
      readfile($file);
      exit();
    } else {
    // In alcuni casi, si dovrà creare la pagina e salvarla.
    // Per far ciò, prima impedire all' utente di terminare quest' operazione finchè non
    // sarà compiuta.
    ignore_user_abort();
    // Poi impostare una funzione di chiusura, così che si possa essere completamente sicuri
    // dell' effettivo termine della procedura
    register_shutdown_function('_cache_page_exit', $file);
    
    // Ora per finire bisogna avviare il buffering
    ob_start();
    

    }
    }

    // Creare la funzione di chiusura che verrà chiamata nel caso lo script esista
    // permettendoci di ripulire tutto.
    function _cache_page_exit($file) {
    // Stava bufferizzando. Primo passo è trarne il contenuto e
    // mostrarlo all' utente.
    $output = ob_get_flush();

    // Svuotare tutti i buffer.
    flush();

    // Salvare questi dati nella cache.
    file_put_contents($file, $output, LOCK_EX);
    }
    ?> [/php]