2015-10-30 2 views
0

L'exemple client.php utilisant la commande "php client.php", dans http://gearman.org/getting-started/ peut communiquer avec worker.php, mais l'utilisation de webbrowser n'a pas pu être communiquée à worker.php. Est-ce que quelqu'un sait pourquoi et comment configurer le gearmand ou le travail autour?Le client Gearman a échoué dans la page Web, mais a réussi dans l'interface de ligne de commande?

OS: CentOS 6,7 Version du variateur: 1.1.8. gearmand a commencé avec "gearmand -l stderr --verbose DEBUG" lorsque les clients communiquent à l'aide "gearman travail -f </somedir/somefile" commande, le retour d'information comme prévu, informations terminal affiche comme suit,

DEBUG 2015 -10-30 11: 56: 01.371309 [1] Reçu GEARMAN_GRAB_JOB_ALL :: 58ca: 3fa1: 77f: 0% 4234047483: 2705334353 -> libgearman-server/thread.cc: 310 DEBUG 2015-10-30 11: 56: 01.371317 [1] :: 58ca: 3fa1: 77f: 0% 4234047483: 41704 Regarder POLLIN -> libgearman-server/gearmand_thread.cc: 151 DEBUG 2015-10-30 11: 56: 01.371334 [proc] :: 58ca: 3fa1: 77f: 0% 4234047483: 41704 commande de paquet GEARMAN_CAN_DO -> libgearman-server/server.cc: 111 DEBUG 2015-10-30 11: 56: 01.371344 [proc] Enregistrement de fu nction: travail -> libgearman-server/server.cc: 522 DEBUG 2015-10-30 11: 56: 01.371352 [proc] :: 58ca: 3fa1: 77f: 0% 4234047483: 41704 commande de paquet GEARMAN_GRAB_JOB_ALL -> libgearman-server /server.cc:111 DEBUG 30/10/2015 11: 56: 01,371371 [1] reçu RUN commande de réveil -> libgearman-server/gearmand_thread.cc: 610

mais quand WebBrowser accède à "http://localhost/client.php", pas informations affichées dans le navigateur Web, le terminal n'affiche rien aussi.

informations dans error.log de nginx comme suit: 2015/10/30 04:59:10 [erreur] 2756 # 0: * 2 FastCGI envoyé dans stderr: "Message PHP: PHP Attention: GearmanClient :: doNormal(): send_packet (GEARMAN_COULD_NOT_CONNECT) Impossible d'envoyer le paquet d'options du serveur - > libgearman/connection.cc: 485 dans /usr/share/nginx/html/client.php sur la ligne 4 "lors de la lecture de l'en-tête de réponse en amont, client: 127.0 .0.1, serveur: localhost, requête: "GET /client.php HTTP/1.1", en amont: "fastcgi: //127.0.0.1: 9000", hôte: "localhost"

[root @ localhost html] # chat client.php

<?php 
$client= new GearmanClient(); 
$client->addServer("127.0.0.1",4730); 
print $client->doNormal("reverse", "Hello World!"); 
?> 

[root @ localhost html] # cat worker.php

<?php 
$worker= new GearmanWorker(); 
$worker->addServer("127.0.0.1",4730); 
$worker->addFunction("reverse", "my_reverse_function"); 
while ($worker->work()); 

function my_reverse_function($job) 
{ 
    return strrev($job->workload()); 
} 
?> 

peut-être le problème est que la page Web a des limites ou une autorisation sur le fonctionnement de la prise?

Je pense que la configuration avec l'option --http-port n'est peut-être pas mature et stable, donc ma solution préférée est que les pages web php client peuvent soumettre un travail directement à Gearmand. Et le programme de travail C++ devrait servir plusieurs requêtes sans appel et s'exécuter et sortir par requête pour gagner du temps.

Cette solution est-elle possible?

S'il vous plaît aidez-moi.

Merci beaucoup!

Répondre