Velocizzare un’applicazione web con MEMCACHED – Seconda parte
COLLEGARSI AL NOSTRO CACHE SERVER
Innanzitutto, dobbiamo creare una connessione al nostro server Memcached. Di seguito il codice che dovreste usare nel vostro script php:
// Connection constants
define(‘MEMCACHED_HOST’, ’127.0.0.1′);
define(‘MEMCACHED_PORT’, ’11211′);
// Connection creation
$memcache = new Memcache;
$cacheAvailable = $memcache->connect(MEMCACHED_HOST, MEMCACHED_PORT);
A questo punto, abbiamo stabilito una connessione al nostro Memcache server. Potrebbe anche fallire ma possiamo conscere l’esito grazie alla variabile $cacheAvailable.
MEMORIZZARE I DATI NELLA CACHE
Addentriamoci nella memorizzazione del dati. Faremo tra poco un’esempio per chiarire i concetti: simuleremo un negozio no line. Abbiamo uno script chiamato ‘edit_product.php’ il cui
scopo è quello di salvare i dati di un prodotto nel nostro database. Ognuno dei nostri prodotti ha le seguenti informazioni:
- id
- name
- description
- price
A questo punto nel nostro edit_product.php, eseguiamo una query INSERT UPDATE il cui scopo è scrivere i dati relativi al prodotto nel nostro database MySql . Esaminiamo il codice:
// We have validated and sanitized our data
// We have escaped every risky char with mysql_real_escape_string()
// Now we want to save it into our database
$sql = “INSERT INTO products (id, name, description, price) VALUES ($id, ‘$name’, ‘$description’, $price)”;
$querySuccess = mysql_query($sql, $db);
Come ho già detto, vogliamo memorizzare i nostri dati sia nel nostro database MySQL e server Memcached. Ecco come possiamo procedere:
// We have validated and sanitized our data
// We have escaped every risky char with mysql_real_escape_string()
// Now we want to write them to our database :
$sql = “INSERT INTO products (id, name, description, price) VALUES ($id, ‘$name’, ‘$description’, $price)”;
$querySuccess = mysql_query($sql, $db);
// We have written our data into our database
// Now let’s store the product name, description and price into our cache
// The method “set” tells our Memcached server to store the data associated to a specific key
if ($querySuccess === true)
{
// We build a unique key that we can build again later
// We will use the word ‘product’ plus our product’s id (eg. “product_12″)
$key = ‘product_’ . $id;
// We store an associative array containing our product data
$product = array(‘id’ => $id, ‘name’ => $name, ‘description’ => $description, ‘price’ => $price);
// And we ask Memcached to store that data
$memcache->set($key, $product);
}
In questo modo sia il database che la cache contengono i nostri dati di prodotto.

