У меня Gearman установлен, работает и передает задания отлично, но только когда я вручную запускаю очередь заданий с помощью этой команды:
/usr/sbin/gearmand -p 4730 -vvvv -u gearman
Если я сделаю это, у меня будет другой экземпляр EC2, работающий как рабочий, а третий - выполняющий задания. Отлично, но я не хочу держать терминал открытым (очевидно) или возиться с экраном. Я бы хотел, чтобы это запускалось при запуске.
Так:
$ ps aux | grep gearman
gearman 745 0.2 0.2 8096 1388 ? Ss 19:11 0:00 /usr/sbin/gearmand --pid-file=/var/run/gearman/gearmand.pid --user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log --listen=127.0.0.1
Мне нравится. Но когда я говорю своему рабочему подключиться:
$ php workers/resize.php
Waiting for job...
PHP Warning: GearmanWorker::work(): gearman_connection_flush:write:111 in /home/ubuntu/workers/resize.php on line 20
Потерпеть поражение!
Также я заметил, что в файл журнала ничего не записывается (он не был создан автоматически, но упоминался в этом сценарии init.d при установке). Я пробовал создать его и даже поигрался с gearman: gearman, но без радости, так что отладить сложно.
Проблема в том, что демон прослушивает 127.0.0.1/local loopback, а не общедоступный IP-адрес.
Это указано в / etc / default / gearman-job-server в Ubuntu.
Измените его на общедоступный IP-адрес машины, перезапустите демон с помощью сценария инициализации, и все должно быть в порядке.
Обычно эта ошибка возникает из-за параметра в GearmanClient :: addServer (). Ему не нравится "localhost" в качестве параметра. Попробуйте указать 127.0.0.1 или ничего не указывать.