Comment puis-je obtenir le nombre de tâches en attente d'un type particulier dans le réducteur?
J'ai un certain nombre de gearman clients d'envoyer un travail, disent tâche1.
$client = new GearmanClient();
$client->addServer();
$client->doBackground('job1', 'workload');
Il prend, disons, 10 secondes pour le processus de ce travail.
Je veux savoir le nombre de 'tâche1' emplois sont en attente pour un travailleur de travailler sur eux en tout temps. Comment puis-je le faire?
source d'informationauteur Coffee Bite
Vous devez vous connecter pour publier un commentaire.
Rapide vérification, j'utilise ce bash one-liner:
Cela ouvre une connexion à un gearman instance en cours d'exécution sur l'hôte local, et envoie le statut requête. Il contient le nom et le nombre d'emplois dans cette instance. Les informations peuvent ensuite être traitées avec
grep
/awk
/wc
etc. pour les rapports et les alertes.Je fais aussi la même chose avec le travailleurs requête qui affiche tous connectés les travailleurs.
Le sommeil est de garder la connexion ouverte assez longtemps pour la réponse.
La liste complète des commandes administratives, et en ce que les moyens de sortie est à http://gearman.org/protocol/. Il suffit de chercher "Protocole Administratif".
De s'étendre sur les d5ve réponse, ajouter un paramètre-w "time out" de votre netcat connexion, sinon vous ne jamais revenir à l'invite de commande.
Il ne ressemble pas il existe des solutions immédiates pour obtenir cette information.
Voici quelques options. Tout d'abord, si vous pouvez récupérer de l'emploi des poignées que vous les créez (de la recherche pour "Parler de la vérification de l'état"), vous pouvez les stocker dans une place centrale et d'interroger à leur sujet à partir de n'importe quel client.
Seconde, vous pouvez configurer votre Gearman serveur à utiliser les files d'attente persistantespuis exécutez une requête à l'encontre de la file d'attente vous-même. Ce pourrait être la plus facile et la plus propre de l'une des deux options.
Gearmand a une interface telnet vous pouvez interroger. (les détails exacts du protocole peuvent être trouvés sur le gearman site web - http://gearman.org/?id=protocol )
J'ai utilisé ce code ici comme un point de départ pour rouler mes propres.
https://github.com/liorbk/php/blob/master/GearmanTelnet.php
(ce code est parfaitement bon par lui-même et vous devriez être en mesure d'éliminer l'utilisation de la boîte)
C'est moins joli solution, mais jusqu'à ce que quelqu'un améliore gearman de l'interface d'administration de sorte que vous pouvez parler directement via PHP ou écrit un plugin pour ça, vous êtes sur votre propre
- Je utiliser
gearman_top
qui fait partie de mod-gearman.Exemple de sortie à partir du site web: