Gearman me dá GEARMAN_COULD_NOT_CONNECT, definitivamente está executando

O meu servidor dev é o Debian Squeeze e estou executando o Gearman 1.1.5, que compilei na fonte junto com a extensão php pecl v1.1.1

Se eu executar o script reverse_client.php, recebo o erro GEARMAN_COULD_NOT_CONNECT.

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

Há algumas postagens similares aqui sobre isso e todos apontam para que a GM não esteja funcionando.

Está definitivamente correndo.

Estou começando com esses params:

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

Se eu soltar a tabela gearman_queue em test_db e reiniciar o daemon, a tabela será recriada, então sua conexão mysql está bem e está começando claramente.

Eu também posso fazer telnet para 4730 no localhost, então não há problema no firewall.

Inicialmente, a GM teve problemas para começar porque estava começando antes do mysql, então eu editei o script de boot

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

e um update-rd.c gearman-job-server defaults define-o para começar depois e ele começa bem em inicializar agora.

A única outra coisa que eu posso pensar é que inicialmente eu instalava via apt, mas a versão era antiga, então eu a removi e compilada a partir da fonte. / usr / sbin / gearmand não existe mais, a única versão é / usr / local / sbin / gearmand

ps ax | grep gearman ps ax | grep gearman mostra apenas um processo em execução.

Netstat mostra apenas um processo em execução

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

O PECL lib parece estar bem:

php -i | grep gearman

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

Estou sem idéias

Eu tive o mesmo problema e os resolvi recentemente depois de alguns dias de frustração (difícil de solucionar, pois há três processos para se preocupar 🙂

Parece (pelo menos no meu caso) que a documentação do PHP para GearmanClient :: addServer () e GearmanWorker :: addServer () está incorreta. Especificamente, os documentos parecem implicar que o nome do host e o número da porta são opcionais e que ele usará localhost e a porta 4730 como padrões se você não especificá-los. Isso nunca funciona – de repente me ocorreu hoje para tentar especificamente explicá-los para processos de clientes e de trabalhadores e tudo começou a funcionar.

Tente especificar todos os valores para nomes de host e portas e veja se isso funciona para você.

Caso você tenha usado algo assim

$ client-> addServers (‘127.0.0.1’, 4730);

ou

$ client-> addServers ();

use algo assim

$ client-> addServers (‘127.0.0.1:4730’);

PS – Eu usei IP localhost, isso pode ser substituído pelo IP host real.