Cachet – cache php basata su filesystem
Cachet è una cache php che usa il filesystem come storage ovvero per memorizzare i dati.
Questo significa che può funzionare anche senza avere a disposizione un database.
Cachet è in pratica un “wrapper” della funzione di cui vogliamo ( uhm.. si potrà dire ? ) cachare il risultato.
Ammettiamo di avere una funzione un pochino lenta, che vogliamo appunto cachare, tipo una funzione che fa una query pesante su un database.
Diciamo che è accettabile avere un ritardo di 60 secondi, ovvero è accettabile avere un tempo di cache di 60 secondi
Prima della cache …
$resultset = miafunzione ("parametro");
Con cachet.
$cache = new cachet(); ... ... $resultset = $cache->get ('miafunzione',Array("parametro"),60); ...
In pratica la classe cachet ha un metodo, get, al quale si passa il nome della funzione da chiamare, i parametri e il tempo di cache voluto, nell’esempio 60 secondi.
Per cui è abbastanza semplice inserirla in qualsivoglia codice php.
Cachet è abbastanza intelligente da non chiamare contemporaneamente la stessa funzione se quest’ultima è già in esecuzione.
Ecco l’esempio fornito con i sorgenti:
<?php require_once ('cachet.php'); function somma ($a,$b){ echo "Calling somma..n"; return $a+$b; } $cache = new cachet(); $a = $cache->get ('somma',Array(4,2),10); echo "[$a]n"; print_r( $a ); ?>
Potete provarla con php cli (command line interpreter), oppure usarla in un sito web.
La versione attuale NON cancella mai i files (oggetti serializzati e lock) nella directory temporanea.
E’ conveniente, se si utilizza con funzioni che hanno sempre parametri diversi, cancellare i files più vecchi di un tot (massimo tempo di cache) dalla directory temporanea con uno script in crontab.
Es per 2 giorni
find /tmp/cachet -ctime +2 -exec rm -f '{}' ;
Cachet è rilasciata con licenza Attribution-Share Alike 3.0
Stai leggendo “ Cachet – cache php basata su filesystem ”, un post di Fabrizio Zellini
- Pubblicato il
- 3 Febbraio 2009 //php the_time('G:i') ?>
- Categorie:
- php
Nessun commento
commenta | feed commenti [?] | trackback uri [?]