GearMan Kesako ?

gearman.png

Après l'interview de D.seguy sur phptv , un nom d'extension a particulièrement attiré mon attention , à savoir "Gearman" Je me suis donc renseigné sur la toile et bien entendu le site officiel http://gearman.org.
Si j'ai bien compris ( sans entrer dans les détails ) , cette extension , permet de déléguer de façon synchrone / asynchrone des taches , sur des machines distinctes , sur lesquelles est installé la partie serveur de GearMan.

Ainsi , l'on peut aisément imaginer un schéma comme ci-dessous :
repart.png
Le client ( internaute ) demande une tache qui nécessite beaucoup de ressources ( pour une raison X ou Y .. ), le serveur , délègue alors à un des serveurs GearMan cette tâche , et attend sagement le résultat .
Un avantage non négligeable de GearMan , est qu'il peut dialoguer avec des langages différents Perl / PHP / C ect ..
J'ai découvert GearMan aujourd'hui même , je ne peux donc pas aller plus dans les détails , mais l'idée est là , il ne reste plus qu'à tester , et partager nos retours ...
Voici donc les étapes d'installation de GearMan client et Serveur.

Serveur

Sur une machine type Ubuntu , un simple

apt-get install gearman

Sur une machine débian :

apt-get install gearman-server

Il faut ensuite penser à modifier le paramètre ENABLED à true dans le fichier de configuration :
/etc/default/gearman-server
Si vous désirez compiler vous même la dernière version :

cd /usr/local/src/
wget http://launchpad.net/gearmand/trunk/0.10/+download/gearmand-0.10.tar.gz
tar xzf gearmand-0.10.tar.gz
cd gearmand-0.10
./configure
make
make install

comme d'hab quoi ...

Le client

Ici , je ne vais présenter que l'installation de l'extension pour PHP .
Deux façons de faire :

  1. via PECL
  2. via les sources

PECL ,

Très simple :

pecl install  channel://pecl.php.net/gearman-0.6.0

Les sources

Presque aussi simple :

cd /usr/local/src/
wget http://pecl.php.net/get/gearman-0.6.0.tgz
tar xzf gearman-0.6.0.tgz
cd gearman-0.6.0/
phpize
./configure
make
make install

Puis ajouter dans votre php.ini le lien vers l'extension :

extension="gearman.so"

Dépendances

Pour mener à bien l'installation de gearman , j'ai installé les librairies suivantes :

apt-get install libgearman-dev libgearman-server-dev uuid-dev

Conclusion

Voilà quelque chose à tester et découvrir , n'hésitez pas à nous faire profiter de vos retours sur l'utilisation de cette extension .