Tag: cache

CakePHP: caching semi automatico delle query tramite AppModel

23 gennaio 2012Categoria:database | php

In un precedente articolo è stata mostrata una semplice struttura per salvare i dati in cache da controller.
Per automatizzare questa funzionalità e scrivere meno codice è possibile centralizzare le funzioni necessarie all’interno della classe AppModel.

La classe contiene:

  • una variabile $cache_key per impostare la chiave per il salvataggio in cache
  • una funzione findCached() da richiamare con gli stessi parametri della funzione find() standard che ritorna i risultati salvati in cache oppure, nel caso in cui non ci siano risultati salvati, esegue la funzione find()
  • il callback afterFind() per salvare i risultati in cache dopo la prima esecuzione della query

Ed ecco la classe completa con i commenti necessari per comprenderne il funzionamento:

Leggi tutto…

CakePHP: una semplice struttura per salvare i dati in cache via controller

8 settembre 2011Categoria:php

Ecco una struttura molto semplice per gestire via controller i dati da salvare in cache:

//imposta identificativo dei dati salvati in cache
$cache_id = 'contenuto_xyz';
//imposta un prefisso per la cache costituito da LINGUA_mycache_
Cache::set(array('prefix' => Configure::read('Config.language').'_mycache_'));
//cerca i dati. se la chiave della cache non è impostata, se è scaduta
//o si verifica un errore durante la lettura $data sarà == false
$this->data[$cache_id] = Cache::read($cache_id);
//se i dati non sono in cache
if ($this->data[$cache_id] === false) {

    /*   INIZIO RICERCA/ELABORAZIONE DATI  */
    $data = $this->XYZ->find('all');
    /*  FINE RICERCA/ELABORAZIONE DATI  */

    //scrittura dell'elemento in cache
    Cache::set(array('prefix'=>Configure::read('Config.language').'_mycache_'));
    Cache::write($cache_id, $data );
}
//imposta la variabile con i dati
$this->data[$cache_id] = $data;

Leggi tutto…

CakePHP: ricavare la lista dei controllers e salvarla in cache

12 aprile 2010Categoria:php

Ecco una funzione che può tornare utile durante lo sviluppo in cakePHP.

Il seguente snippet permette di ricavare dinamicamente la lista di tutti i controllers e salvarla in cache.

In questo caso la lista verrà salvata come stringa separata da pipes:


controller_a|controller_b|controller_c

Ed ecco il codice:


//legge la lista dei controllers dalla cache
//(se è stata precedentemente creata)
$controllers = Cache::read('controllers_list');
//se la lista in cache non esiste
if ($controllers === false)
{
	$controllers = Configure::listObjects('controller');

	foreach ($controllers as &$value)
	{
		$value = Inflector::underscore($value);
	}

	$controllers = implode('|', $controllers);
	//scrittura della lista in cache
	Cache::write('controllers_list', $controllers);
}