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

  • No Related Post