Question

recommanderiez-vous l’utilisation de beanstalkd [ http://kr.github.com/beanstalkd/ ] pour

Traitement asynchrone en PHP?

J'ai besoin de quelques commentaires / inconvénients, de la part de quiconque a utilisé cette librairie.

Merci,

Était-ce utile?

La solution

J’ai utilisé Beanstalk en production et lors de tests, j’ai passé des millions de messages simples - généralement en masse, mais le système de production avait subi plus de 100 000 tâches jusqu’à ce que je quitte la société. Il est peut-être toujours en cours d'exécution, auquel cas il pourrait en coûter des dizaines de millions, voire davantage, s'ils avaient étendu son utilisation, comme je l'avais prévu.

Je le recommanderais, car il comporte un certain nombre d'excellents points.

    Les tubes
  • nommés peuvent être utilisés pour limiter les travaux en cours de livraison. Je regarde un tube basé sur le nom d’hôte de la machine, qui limite le lieu de travail d’un travailleur - utile pour les fichiers téléchargés qui ne sont stockés que sur un serveur particulier.
  • Les retards peuvent être utilisés pour définir des événements futurs
  • Les dernières versions du serveur prennent également en charge la journalisation bin, ce qui permet la persistance, même s'il ne s'est jamais bloqué.

Le traitement des images a été ma première tâche. Effectuer ce travail en dehors d'un processus Apache / mod_php m'a permis de redimensionner des images plus grandes sans affecter le serveur (extirper le serveur Web). Avec une file d'attente peu chargée, il avait créé les vignettes avant l'actualisation de la page après le téléchargement.

De nombreuses autres tâches potentielles pourraient également être traitées de manière asynchrone.

Le seul problème que j’ai eu à faire est de s’assurer que les travailleurs sont recrutés sans incident - ou que des erreurs soient détectées afin que le travail puisse être "enterré", assurant ainsi que le travail ne soit pas remis dans la file d’attente. être exécuté à nouveau (et que le travailleur se bloque à nouveau).

Le redémarrage des utilisateurs pour effacer la mémoire peut également être utile, car PHP est moins bien adapté aux processus de longue durée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top