Salve,
ho trovato un articolo su come realizzare il caching di pagine web per evitare di sovraccarica il database con continue interrogazioni.
Il metodo si sviluppa su due differenti file:
controlla_cache.php
Codice PHP:
<?php
// Percorso della cartella in cui salvare i file temporanei
$cachedir = '/cache/';
// Durata massima (in minuti) delle pagine in cache
$time = 30;
// Pagine da NON salvare in cache
$no_cache = array(
'mrwebmaster.it/rss.php',
'mrwebmaster.it/cerca.php'
);
// variabile interna di controllo
$no_pagina = false;
// Recupero la URL completa della pagina corrente
$pagina = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// costruisco il percorso fisico del file temporaneo
$cachefile = $cachedir . md5($pagina) . '.html';
// Verifico che la pagina corrente non sia tra quelle da NON salvare in cache
for ($i = 0; $i < count($no_cache); $i++)
{
// Se la pagina corrente è tra quelle da escludere la variabile
// $no_pagina viene impostata come true (bloccando il sistema di caching)
if (strpos($pagina, $no_cache[$i]) !== false) $no_pagina = true;
}
// Se esiste il file di cache per la pagina corrente (e questa non è tra quelle escluse)
// verifico qual'è il time di creazione e lo memorizzo nella variabile $cache_created
$cache_created = ((file_exists($cachefile)) && ($no_pagina === false)) ? filemtime($cachefile) : 0;
// Verifico che la pagina temporanea non sia scaduta
if ((time() - ($time * 60)) < $cache_created)
{
// se la pagina in cache non è troppo vecchia la leggo ed interrompo l'esecuzione dello script
readfile($cachefile);
exit();
}
ob_start();
?>
scrivi_cache.php
Codice PHP:
<?php
if ($no_pagina === false)
{
// apriamo il file della cache in scrittura
$file = fopen($cachefile, 'w');
// salviamo il contenuto dell'output buffer nel file
fwrite($file, ob_get_contents());
// chiudiamo il file
fclose($file);
}
// inviamo l'output al browser
ob_end_flush();
?>
Ho completato (come da istruzioni) caricando i due file sul serverr ed inserendo all'inizio del codice html della pagina:
Codice PHP:
<?php
include("controlla_cache.php");
?>
...ed alla fine del codice html della pagina:
Codice PHP:
<?php
include("scrivi_cache.php");
?>
Ho creato sul server la cartella cache ...
ed aprendo la pagina web mi segnala un errore in riga 5 di scrivi_cache.php .
Dove può essere l'errore?
Magari esiste un metodo alternativo per il caching?
Grazie