Il existe une liste de clients PHP sur le site RabbitMQ . Je pose cette question dans l’espoir que les personnes qui ont utilisé l’un de ces outils puissent partager leurs expériences ici. Par exemple.
Même si vous venez d'utiliser l'une de ces bibliothèques, partagez vos expériences.
Pour référence, voici quelques clients listés:
P.S. Je sais que "Le meilleur ..." est "subjectif", mais le but de cette question est de recueillir des expériences et d'aider les gens à prendre une décision éclairée au sujet de ces bibliothèques AMQP. Ne fermez pas cette question s'il vous plait parce qu'elle contient le mot "meilleur".
P.P.S. J'utilise PHP 5.3 sur RHEL 5.
Pour référence, PECL AMQP Extension et http://php.net/manual/fa/book.amqp.php sont la même chose, l’un est le package, l’autre la documentation relative au package.
En tant que responsable de l'extension officielle PHP AMQP, je suis un peu partial. De nombreuses personnes utilisent cette extension dans les environnements de production à volume élevé et à faible latence, car elle est beaucoup plus rapide que celle écrite en PHP natif. De plus, comme je l'utilise constamment dans mon travail, je dois le garder au travail et le mettre à jour.
L'inconvénient de cette extension est qu'elle n'est pas encore disponible pour Windows, car la bibliothèque dont elle dépend est actuellement en cours de portage. Il n’ya pas de prise en charge d’ETA pour Windows, mais dès que les dépendances prennent en charge Windows, nous avons pour objectif de transférer également l’extension vers Windows.
Cette bibliothèque semble être en vie et succéder à l'original de code.google:
https://github.com/videlalvaro/php-amqplib
Il existe également des tests et Travis CI.
Quelques informations de l'examen initial:
https://github.com/tnc/php-amqplib forked http://code.google.com/p/php-amqplib/ à un inconnu dans le passé et n’a pas d’historique clair ni montré ce qui a été changé, ce qui entraîne une fragmentation regrettable des efforts. Il semble également ne pas suivre les corrections de bogues appliquées à l'original, dont un certain nombre ont eu lieu au cours des derniers mois.
De même, http://code.google.com/p/php-amqplib/ lui-même ne semble plus être en développement et un correctif incorrect a été appliqué il y a plus d'un mois, ce qui a laissé le coffre en mauvais état. (J'ai soumis un correctif pour résoudre ce problème, mais c'est un mauvais signe).
Après avoir examiné à la fois php-amqp et la version PECL, mes impressions sont que la prise en charge de base pour la publication et la consommation de messages est mise en œuvre. Cependant, ils ne fonctionneront immédiatement avec les plates-formes * NIX. Vous devrez parcourir des étapes pour les faire fonctionner sous Windows (ce qui peut poser problème ou non, selon votre plate-forme de développement ou de déploiement).
Bonus: https://github.com/tnc/php-amqplib est utilisé dans le livre MEAP "RabbitMQ in Action". Reste à savoir si cela aura une influence sur son adoption.
Il y a aussi https://github.com/bkw/php-amqp/ qui, à mon avis, est un miroir de http://code.google.com/p/php-amqplib/ . J'ai eu quelques problèmes avec ce code: Notez les messages pendant le fonctionnement normal et toutes sortes d'erreurs et d'avertissements quand quelque chose ne va pas. Le code prend également le mot du manuel PHP = pour acquis; Par exemple, les appels de lecture de socket ne sont vérifiés que par rapport à un retour d'erreur, alors qu'en fait, je découvre simplement que la fermeture/expiration d'une socket peut être indiquée par l'une des 4 conditions différentes.
Je commence à penser qu'une solution de bibliothèque compilée (c'est-à-dire un PHP extension) est la meilleure option, d'autant plus qu'il existe des problèmes de threading et de socket, et = PHP les gère mal.
Nous travaillons sur amqp interop . Il tente d'identifier et de normaliser une méthode commune permettant aux programmes PHP de créer, envoyer, recevoir et lire des messages MQ via AMQP afin de garantir l'interopérabilité.
Si vous placez un pari dessus, vous pouvez commencer avec n'importe quel transport compatible interop. Vous pourrez toujours le changer à l'avenir, vous n'êtes pas bloqué.
Nous supportons actuellement enqueue/amqp-ext et enqueue/amqp-lib . Le premier fonctionne sur l'extension php amqp où un autre adopte phpamqplib.