msgbartop
De tout et de rien
msgbarbottom

11 fév 09 Memcached

J’entends parler de memcached comme la solution miracle pour optimiser son site. Digg l’utilise, Facebook l’utilise et d’autres sites à fort trafic. Memcached a été développé à l’origine pour les besoins de LiveJournal (une plateforme de blogs). 

J’avais regardé à l’époque vite fait de quoi il en retournait mais cela restait très obscure. Dernièrement, je me suis jeté à l’eau.  Et j’ai compris que memcached stockait simplement des données en mémoire (explication basique). 

Et MySQL alors ? La principale utilisation de Memcached : cacher les requêtes MySQL. Mais il faut savoir que Memcached ne se limite pas à MySQL.

Le principe, c’est de mettre en cache dans memcached les requêtes lourdes.  Le resultat de la requête se trouvera dans memcached. Au lieu de faire un SELECT compliqué sur une base de données avec des accès disques, on fait simplement un accès à la mémoire.

Mauvaise nouvelle, pour utiliser Memcached avec MySQL, il faudra adapter son code PHP. 
Bonne nouvelle, si vous utilisez une application PHP, comme WordPress, MediaWiki, etc … vous trouverez surement des plugins qui vous permettront de greffer memcached facilement.

Installation de Memcached

Pour l’utiliser, il faut l’installer, c’est con non ?

# emerge --ask memcached

Ensuite, il faut le démarrer (c’est un serveur)

# /etc/init.d/memcached start

Par défaut, memcached se lance en localhost sur le port 11211 et alloue 64 Mo de mémoire. Vous pouvez changer cela en modifiant le fichier de configuration (/etc/conf.d/memcached)

Installer un client PHP : PECL Memcache

Pour utiliser memcached, il faut se connecter au server memcached avec un client. Si vous développez en PHP, il vous faudra un client memcached pour PHP, j’ai nommé  PECL Memcache.

Pour l’installer sur gentoo, voici la manip à faire :
# echo "=dev-php5/pecl-memcache-3.0.1" >> /etc/portage/package.keywords
# emerge -pv dev-php5/pecl-memcache

Et voilà. Redémarrez votre serveur web (apache) et vous devriez voir apparaitre memcache dans votre phpinfo.

Pour l’utiliser, c’est simple, voici un petit bout de code assez clair :

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Connexion impossible");
$version = $memcache->getVersion();
echo 'Version du serveur : '.$version;
// On stocke koreus dans la clef "key"
$memcache->set('key', 'koreus', false, 10) or die ("Echec de la sauvegarde des données sur le serveur");
echo "Les données ont été stockées dans le cache (les données expireront dans 10 secondes)";
// On recupère la valeur de la clef "key"
$get_result = $memcache->get('key');
echo 'Données depuis le cache : '. $get_result;
?>

Toute la doc pour utiliser le client se trouve à cette adresse :  PHP Memcache

25 oct 07 API Twitter

Depuis que j’utilise Twitter, je me dis qu’il faut que je trouve un moyen de l’intégrer au site. Twitter peut être un outil sympa pour renforcer l’esprit communautaire de Koreus.com.

Dimanche, je me suis intéressé de près à l’API Twitter, ce que je cherchais avant tout, c’était une librairie pour PHP (le langage web que je maitrise le mieux). J’ai trouvé mon bonheur sur le Blog de David Billingham. Je me suis rendu compte en regardant le source, à quel point l’API était simple à utiliser grace à cURL. Pour utiliser cURL avec PHP, il faut recompiler PHP avec l’option cURL. Super facile à faire sous Gentoo avec la commande suivante :

$ USE="curl" emerge --ask php

J’ai commencé une ébauche d’intégration de twitter sur Koreus.com, il y a encore du travail à faire. Je vous en dirai plus la prochaine fois.

07 oct 07 Bug dans PHP

Aujourd’hui j’ai pris connaissance via le flux Gentoo Security d’une nouvelle faille de PHP. La nouvelle version (php-5.2.4_p20070914-r2) corrige le problème.
Un petit :
# emerge –sync
suivi d’un
# emerge –ask –oneshot –verbose « >=dev-lang/php-5.2.4_p20070914-r2″

Et hop, système à jour. J’en ai profité pour faire une mise à jour d’Apache et surtout ne pas oublier de recompiler eAccelerator.

Gentoo, c’est bien pratique tout de même.