2013-02-14 8 views
8

Mein dev Server ist Debian Squeeze und ich bin mit Gearman 1.1.5, die ich aus den Quellen kompiliert zusammen mit dem PHP-PECL-Erweiterung v1.1.1gearman gibt mir GEARMAN_COULD_NOT_CONNECT, es auf jeden Fall läuft

Wenn ich die reverse_client laufen .php Skript Ich bekomme 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 ähnlichen Beiträge hier über diese und sie alle auf GM laufen nicht.

Es ist definitiv läuft.

Ich fange es mit diesem params:

PARAMS="--queue-type=MySQL --mysql-db=test_db --mysql-user=gearman --mysql-password=gearman"

Wenn ich die gearman_queue Tabelle in TEST_DB falle dann den Daemon neu starten, die Tabelle neu erstellt wird, so dass seine MySQL-Verbindung in Ordnung ist und es fängt an klar.

Ich kann Telnet auch auf 4730 auf localhost, so gibt es keine Firewall-Problem.

Ursprünglich hatten GM Probleme beim Starten, weil es vor mysql Start war, so dass ich bearbeiten den Init-Skript

### BEGIN INIT INFO 
# Provides:   gearman-job-server 
# Required-Start: $network $remote_fs $syslog mysql 

und ein update-rd.c gearman-job-server defaults setzt es nach zu starten und es beginnt beim Starten jetzt gut.

Die einzige andere Sache, die ich denken kann, ist, dass ich zunächst über apt installiert hatte, aber die Version war zu alt, also habe ich es entfernt und kompiliert aus der Quelle./usr/sbin/gearband existiert nicht mehr die einzige Version ist/usr/local/sbin/gearbmand

ps ax | grep gearman zeigt nur einen Prozess läuft.

Netstat zeigt nur ein Prozess running`

tcp 0 0 *:4730 *:* LISTEN 2325/gearmand

Die PECL lib fein scheint:

php -i | grep gearman

/etc/php5/cli/conf.d/gearman.ini, 
gearman 
gearman support => enabled 
libgearman version => 1.1.5 

ich aus Ideen bin

+0

Ich habe auch die wirklich alten Pakete ausprobiert und habe sie schließlich entfernt, GM 1.1.5 von Hand gebaut und dann die PECL-Erweiterung gebaut. – Eno

Antwort

15

Ich hatte das gleiche Problem und vor kurzem sol Ich habe sie nach ein paar Tagen der Frustration (schwer zu behandeln, da es drei Prozesse zu kümmern gibt):

Es erscheint (zumindest in meinem Fall), dass die PHP-Dokumentation für GearmanClient :: addServer() und GearmanWorker: : addServer() ist falsch. 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 - plötzlich fiel es mir heute zu versuchen, sie explizit für beide Client-und Worker-Prozesse zu spezifizieren und alles begann zu arbeiten.

Versuchen Sie, alle Werte für Hostnamen und Ports anzugeben und sehen Sie, ob dies für Sie funktioniert.

+1

BTW, ich habe einen Fehler für die falsche Dokumentation auf der PHP-Seite geöffnet. – Eno

+3

Bingo! Ich musste explizit addServer ("localhost", 4730) aufrufen; Ta sehr. –

+2

+1000 Nach Stunden der Frustration, das ist die einfache Lösung, die alles für mich funktioniert hat (Client, Server und Arbeiter lokal auf einem Macbook) – Asciiom

2

Im Fall, wenn Sie so etwas wie diese

$ client-> addServers ('127.0.0.1', 4730) verwendet werden;

oder

$ client-> addServers();

Verwendung so etwas wie dieses

$ client-> addServers ('127.0.0.1:4730');

PS - Ich habe localhost IP verwendet, kann dies mit tatsächlichen Host-IP ersetzt werden.

Verwandte Themen