gearman дает мне GEARMAN_COULD_NOT_CONNECT, он определенно работает

Мой Dev-сервер – это Debian Squeeze, и я запускаю Gearman 1.1.5, который я скомпилировал из источника вместе с расширением php pecl v1.1.1

Если я запустил скрипт reverse_client.php, я получаю ошибку 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

Есть несколько подобных сообщений здесь об этом, и все они указывают на то, что GM не работает.

Это определенно работает.

Я начинаю с этих параметров:

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

Если я сброшу таблицу gearman_queue в test_db, перезапустите демон, и таблица будет воссоздана, поэтому его соединение с mysql прекрасное, и это явно начинается.

Я также могу установить telnet на 4730 на localhost, поэтому проблема с брандмауэром отсутствует.

Первоначально у GM возникли проблемы, поскольку он начинался до mysql, поэтому я редактировал скрипт init

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

и update-rd.c gearman-job-server defaults устанавливают его для начала, и теперь он начинается нормально при загрузке.

Единственное, что я могу придумать, это то, что изначально я установил через apt, но версия была старой, поэтому я удалил ее и скомпилировал из исходного кода. / usr / sbin / gearmand больше не существует, единственная версия – / usr / local / sbin / gearmand

ps ax | grep gearman ps ax | grep gearman показывает только один процесс.

Netstat показывает только один процесс, выполняющийся `

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

PECL lib кажется прекрасным:

php -i | grep gearman

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

У меня нет идей

У меня была такая же проблема, и я недавно решил их после нескольких дней разочарования (трудно устранить проблему, поскольку есть три процесса, о которых нужно беспокоиться 🙂

По-видимому (по крайней мере, в моем случае) неверна документация PHP для GearmanClient :: addServer () и GearmanWorker :: addServer (). В частности, документы, похоже, подразумевают, что имя хоста и номер порта являются необязательными и что он будет использовать localhost и порт 4730 в качестве значений по умолчанию, если вы их не укажете. Это никогда не срабатывает – мне внезапно пришло в голову попробовать явно указать их как для клиентских, так и для рабочих процессов, и все началось.

Попробуйте указать все значения для имен хостов и портов и посмотреть, работает ли это для вас.

Если вы использовали что-то вроде этого

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

или

$ Client-> addServers ();

используйте что-то вроде этого

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

PS – Я использовал localhost IP, это может быть заменено фактическим IP-адресом хоста.