
Raramente su Skimbu pubblichiamo articoli riguardanti linguaggi o comunque guide di programmazione, ma se lo facciamo è perché si tratta di script che vengono anche utilizzati qui su Skimbu. Lo script che andremo a vedere oggi è piuttosto semplice e ci servirà per eseguire la cache di script PHP. Vi faccio un esempio pratico. Fino a poco tempo fa su Skimbu articoli come quello delle 100 app per iPad erano parecchio lenti, in quanto per ciascun riquadro-recensione era necessario ricevere i dati dell’applicazione da Apple. Quindi ho dovuto trovare un metodo per eseguire una cache di ciascun riquadro che durasse molto tempo, anche un anno. In questo modo per un anno non dovrò più ricevere dati da Apple per quelle applicazioni, in quanto saranno memorizzati in dei file di testo. Lo script e altre spiegazioni dopo il salto…
Introduzione allo script
Prima di tutto, lo script che andremo a vedere e spiegare è molto semplice e basilare. Non è nulla di avanzato e non è utile a eseguire la cache di intere pagine. È perfetto però per eseguire la cache di script che hanno bisogno di una cache determinata e semplice. Ad esempio l’articolo che ho linkato prima delle 100 app per iPad possiede un doppio sistema di cache:
- La prima è la cache dell’intera pagina che dura circa 2 ore ed è eseguita dal plugin W3 Total Cache per WordPress.
- La seconda cache è quella di ciascun riquadro delle applicazioni, dura un anno ed è eseguita dal semplice script di questo articolo
Così come tutte le guide PHP di internet, anche questa guida prende ispirazione da una guida inglese.
Lo script
A differenza di molte guide, io preferisco sempre prima mostrare lo script intero, commentarlo a dovere e aggiungere qualche spiegazione dopo, ecco dunque lo script intero.
// INIZIO CACHE
$cachefile = 'C:/themes/cache/xxx.txt'; //Qui andrà inserita la directory e il file di cache che sarà creato automaticamente, leggi il paragrafo dopo per ulteriori spiegazioni
$cachetime = 525600 * 60; // Durata della cache in secondi, in questo caso è un anno
// IF fondamentale, se il file di cache esiste già non viene creato, se non esiste verrà creato nello step successivo all'else
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) {
include($cachefile);
} else {
ob_start(); // start the output buffer
//Qui va lo script che scriverà attraverso un echo o un return nel file TXT, leggi il paragrafo dopo per ulteriori spiegazioni
$fp = fopen($cachefile, 'w') or die("C'è stato un errore nel caricare il file"); // Apre il file di cache per scrivere
fwrite($fp, $return); //Il file viene salvato
fclose($fp); //Il file TXT viene chiuso
ob_end_flush(); // L'output viene inviato al browser e lo script da ora in avanti verrà caricato con la cache
}
Spiegazione e personalizzazione dello script
La variabile $cachefile dev’essere non solo la directory dove verrà posto il file, ma anche il nome del file. Può essere una variabile “statica”, ad esempio mettendo:
$cachefile = 'C:/blog/themes/cache/file_di_cache.txt';
Oppure può essere dinamica, se ad esempio vuoi mettere il file nel tuo tema di WordPress, allora dovrai mettere:
$templatedirectory = get_template_directory(); $cachefile = $templatedirectory . '/cache/file_di_cache.txt';
Assicurati prima che esista la cartella cache nel tema. Poi volendo puoi rendere dinamico anche il nome del file, aggiungendo una variabile al posto di “file_di_cache”, ma per quello dipende da caso a caso. Ad esempio su Skimbu per l’articolo sulle 100 app per iPad abbiamo utilizzato l’ID dell’applicazione di ciascun riquadro per il nome del file TXT.
La variabile $cachetime è la durata in secondi della cache, scaduto tale tempo la cache sarà ricostruita. Ad esempio 120 * 60 significa due ore. Se vuoi farla durare un anno dovrai mettere 525600 * 60.
Mi vorrei soffermare infine sulla parte più importante dello script, cioè lo script di cui vuoi eseguire la cache. Infatti dopo la stringa ob_start(); dovrai inserire lo script PHP che ritornerà o stamperà quel testo che andrà a finire nel file TXT di cache. Dopo ob_start(); ci puoi mettere qualunque cosa, l’importante è che se metti una funzione ci sia un ritorno e quindi la funzione dovrà contenere un echo o un return che sarà poi scritto nel file TXT. Se ad esempio dopo ob_start(); ci metto:
$somma = 5 + 6; echo $somma;
Nel file TXT apparirà semplicemente “11″. Se non avessi messo l’echo, allora avrei creato un file TXT vuoto. Anche in questo caso comunque dipende molto dallo script di cui dovete eseguire la cache. Noi abbiamo eseguito la cache di una funzione che produce l’HTML del riquadro di un’applicazione per iOs, tale HTML viene poi scritto nel file TXT.
Conclusioni
Sicuramente per utilizzare al meglio questo script dovrai conoscere abbastanza bene PHP. Questa soluzione di cache è una soluzione che può essere applicata a tantissimi tipi di script, necessita solo un minimo di ragionamento quando occorre inserire lo script che stamperà qualcosa nel file TXT. L’importante è capire il funzionamento della cache, dopodiché sarà semplice applicarla alle proprie necessità.
