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!