gearman

Gearman est un framework générique qui permet de distribuer des taches a différents processus sur une même machine ou sur plusieurs machines dans un cluster. Il permet entre autres a votre application d’exécuter des taches en parallèle et ainsi réduire la charge de traitement. Vous pourrez aussi invoquer du code écrit en un langage différent.

L’architecture de Gearman est basée sur trois éléments :

  • Les serveurs de travail (Job Servers)

    Ils jouent globalement le rôle de proxy en renvoyant les requêtes (taches) d’un client a un travailleur (worker) disponible
  • Les clients (Clients)

    Ils parlent au serveur de travail afin d’exécuter une ou plusieurs taches.
  • Les travailleurs (Workers)

    Ce sont des processus qui gèrent les taches en exécutant des fonctions. Chaque travailleur rend disponible un ensemble de fonctions en les enregistrant avec un serveur de travail. via cette architecture il devient possible d’exécuter plus d’une tache en gérant plusieurs travailleurs.

    Une autre fonctionnalité intéressante de Gearman est que les fonctions des travailleurs peuvent être écrites en différents langages comme C, PHP etc. Ce qui permet de choisir le langage de votre choix. Par exemple, vous pourrez ecrire un programme C ou C++ qui exécute une lourde tache et qui s’enregistre comme un travailleur démon. Ainsi vous pourrez appeler les librairies C/C++ via PHP par exemple sans avoir a écrire des extensions et aussi sans avoir a gérer les problèmes de sécurité des processus (thread safety) (Merci Pierrick pour l’explication de l’autre jour ;)).

Gearman permet aussi d’effectuer des taches synchrones et asynchrones et il implémente aussi une gestion de file de messages.

Plus d’infos pour utiliser Gearman avec PHP : dans cet article (Anglais)

Le site officiel de : Gearman