Мой 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-адресом хоста.