Mein Dev-Server ist Debian Squeeze und ich führe Gearman 1.1.5 aus, das ich zusammen mit der php pecl-Erweiterung v1.1.1 aus der Source kompiliert habe
Wenn ich das reverse_client.php Skript ausführen bekomme ich den GEARMAN_COULD_NOT_CONNECT Fehler.
PHP Warning: GearmanClient::do(): send_packet(GEARMAN_COULD_NOT_CONNECT) Failed to send server-options packet -> libgearman/connection.cc:430 in /home/bealers/build/gearman-1.1.1/examples/reverse_client.php on line 26
Es gibt ein paar ähnliche Beiträge hierüber, und alle verweisen darauf, dass GM nicht läuft.
Es wird definitiv ausgeführt.
Ich beginne es mit diesen Parametern:
PARAMS="--queue-type=MySQL --mysql-db=test_db --mysql-user=gearman --mysql-password=gearman"
Wenn ich die gearman_queue-Tabelle in test_db ablege und den Daemon neu starte, wird die Tabelle neu erstellt, so dass ihre mysql-Verbindung in Ordnung ist und eindeutig beginnt.
Ich kann auch auf localhost 4730 telnet, also gibt es keine Firewall-Problem.
Anfangs hatte GM Probleme beim Starten, weil es vor mysql gestartet wurde, also habe ich das init-Skript
bearbeitet %Vor% und ein update-rd.c gearman-job-server defaults
legen fest, dass es nach dem Start beginnt, und es beginnt jetzt beim Hochfahren.
Die einzige andere Sache, die ich mir vorstellen kann, ist, dass ich anfangs über apt installiert hatte, aber die Version war zu alt, also habe ich sie entfernt und aus der Quelle kompiliert. / usr / sbin / gearband existiert nicht mehr, die einzige Version ist / usr / local / sbin / gearband
ps ax | grep gearman
zeigt nur einen laufenden Prozess an.
Netstat zeigt nur einen Prozess an, der '
ausführt tcp 0 0 *:4730 *:* LISTEN 2325/gearmand
Die PECL-Lib scheint in Ordnung:
php -i | grep gearman
Ich habe keine Ideen mehr
Ich hatte das gleiche Problem und habe sie vor kurzem nach einigen Tagen der Frustration gelöst (schwer zu beheben, da es drei Prozesse gibt, um die ich mich kümmern muss :-))
Es scheint (zumindest in meinem Fall), dass die PHP-Dokumentation für GearmanClient :: addServer () und GearmanWorker :: addServer () falsch ist. Insbesondere scheinen die Dokumente darauf hinzuweisen, dass Hostname und Portnummer optional sind und dass sie localhost und Port 4730 als Standardwerte verwenden, wenn Sie sie nicht angeben. Diese nie funktioniert - mir fiel es heute plötzlich ein, sie explizit für Client- und Workerprozesse zu spezifizieren, und alles begann zu arbeiten.
Geben Sie alle Werte für Hostnamen und Ports an und prüfen Sie, ob dies für Sie funktioniert.
Falls Sie etwas so verwendet haben
$ client- & gt; addServer ('127.0.0.1', 4730);
oder
$ client- & gt; addServer ();
benutze so etwas
$ client- & gt; addServer ('127.0.0.1:4730');
PS - Ich habe localhost IP verwendet, dies kann durch die tatsächliche Host-IP ersetzt werden.