HOWTO: Creare un file di cache in PHP | Flavio's blog


HOWTO: Creare un file di cache in PHP

in Webdesign, Web 2.0 & SEO | | 4 Commenti » | Ultima modifica:

In questo sito, soprattutto nella homepage, sono presenti alcuni riquadri informativi, che mostrano automaticamente i post del blog più recenti, i commenti più recenti, gli ultimi video caricati su Youtube, l’ultima mia attività in bici, e simili.

Ogni volta che questi riquadri vengono caricati, in teoria, viene eseguito il codice che permette di mostrare quell’output. In realtà, per non dilatare i tempi di caricamento e sovraccaricare il sito, è più comodo creare dei file di CACHE, che ci permetteranno di conservare l’output già elaborato, per un certo numero di ore a nostro piacere.

In questo modo, per un ristretto lasso di tempo, verrà caricato l’output senza dover compiere lunghe operazioni in PHP/JSON/XML, o quanto altro serva allo scopo.

Questo è il modello che utilizzo di solito:

<?
$expiretime=300;     	 // cache expire time in minutes
$cachename="file.cache"; //name of the cachefile

//create the cachefile if it doesn't exist
if (!file_exists($cachename)) {
     $create = fopen($cachename, 'w');
 	 chmod ("$cachename", 0644); //set chmod 644
	 fclose($create);
}

// Is the file older than $expiretime, or the file is new/empty?
$FileAge = time() - filectime($cachename);	// Calculate file age in seconds
if ($FileAge > ($expiretime * 60) || 0 == filesize($cachename))
{
	//do something [...]
	//[...]

	// Now refresh the cachefile with newer content

	$output = //youroutput;

	$handle = fopen($cachename, 'wb');
	fwrite($handle, $output);			
}

//cachefile is fresh enough... outputting data
$data=file_get_contents($cachename);
echo $data;
?>

In $expiretime si imposta il numero di minuti entro cui si dovrà utilizzare il file di cache, e dopo cui si procederà ad aggiornarla.
Ho lasciato i commenti in inglese, per permettere un uso più vasto di questo script.

Qualsiasi operazione di parsing, o quanto altro che serve per produrre l’output, va inserito dove ho scritto “//do something”.

La riga:

write($handle, $output);


andrà a scrivere il contenuto di $output nel file di cache.

E’uno script che ho scritto un bel po’ di tempo fa, ma risulta sempre utile…

Qualsiasi commento è il benvenuto!



4 Commenti »

Per piacere accetta i cookie di terze parti per poter commentare il post! Il pulsante CAMBIA LE SCELTE DEI COOKIE si trova nel footer del sito. / In order to comment this post, please accept the third party cookies! The button CAMBIA LE SCELTE DEI COOKIE is in the footer of the website.