Как установить mmoreramerino/GearmanBundle с Symfony 2.1.x?

Я новичок в Symfony 2 и совершенно не знаком с Gearman. Я ищу пакет для интеграции Symfony 2 с Gearman.

набор mmoreramerino кажется самым популярным пакетом, по мнению упаковщиков. К сожалению что-то похоже сломалось, автозагрузчик не находит комплект.

Fatal error: Class 'Mmoreramerino\GearmanBundle\MmoreramerinoGearmanBundle' not found in ...

Я пробовал переключиться на "dev-development" как я понял из проблем, которые были исправлены в этой ветке, но у меня это тоже не сработало.

Вопрос: Как я могу установить этот пакет, используя Symfony 2.1.x? Вопрос 2: Существуют ли какие-либо работающие и документированные альтернативы?

Изменить Если кто-то еще столкнется с этим вопросом: вот как я его запустил!

  1. Установите gearman, libgearman, расширение PECL для PHP (используйте последние версии!)
  2. проверьте, что gearman отображается в phpinfo() (как версия cli, так и версия веб-сервера)
  3. запустите gearmand в терминале 1, используя "gearmand --verbose INFO" (вы увидите, что рабочие и клиенты подключаются к gearman - или нет ;-))
  4. запустите в терминале 2 reverse_worker.php из каталога примеров расширения gearman php
  5. запустите в терминале 3 reverse_client.php из каталога примеров расширения gearman php
  6. Если это работает, вы готовы к Symfony: установите mmoreramerino/GearmanBundle с помощью «dev-development»
  7. скопируйте dev.base.yml из пакета в app/config/gearman/dev.yml
  8. Теперь добавьте TestWorker.php в свой пакет, как описано в документации.
  9. включите testWorker с помощью консольного скрипта "php app/console gearman:job:execute MmoreramerinoGearmanBundleWorkerstestWorker~test"
  10. теперь вы можете отправлять задания слушающему testWorker в контроллере Symfony (или где-то еще в Symfony). Мне пришлось указать сервер, хотя я использую хост/порт по умолчанию.

    $gearman = $this->get('gearman');
    $gearman->setServer('127.0.0.1',4730);
    $gearman->doNormalJob('MmoreramerinoGearmanBundleWorkerstestWorker~test');


person herrjeh42    schedule 08.02.2013    source источник


Ответы (1)


Чтобы установить пакет, вам нужно добавить следующую строку в composer.json

"Mmoreramerino/GearmanBundle": "dev-development"

и запустите обновление композитора;

Затем зарегистрируйте его в app/AppKernel.php (кажется, вы это уже сделали)

new Mmoreramerino\GearmanBundle\MmoreramerinoGearmanBundle(),
person seferov    schedule 08.02.2013
comment
Когда я очищаю кеш Symfony через GearmanBundle через кеш php app/console:clear --no-warmup, я получаю сообщение об ошибке не могу найти файл настроек в пути /vol/www/dsearch.dev/htdocs/dsearch/app/config /gearman/dev.yml Что должно быть в этом файле? - person herrjeh42; 08.02.2013
comment
вы должны настроить свое приложение mmoreramerino.github.com/GearmanBundle/settings.html - person seferov; 08.02.2013
comment
О, спасибо, пропустил это... (моя проблема с фатальной ошибкой, вероятно, возникла, когда я начал с v01, и, вероятно, что-то все еще было кэшировано где-то...). Теперь это почти работает, Symfony объявляет Deprecated: GearmanClient::do(): Используйте GearmanClient::doNormal() в ../Service/GearmanClient.php, строка 111. Вы исправили это для себя в коде пакета? Я видел довольно много форков на Github, может там это исправлено? - person herrjeh42; 08.02.2013
comment
Нашел в комментариях к исходному коду, как обойти устаревшие предупреждения. Примечание для себя: RTFM ;-) - person herrjeh42; 08.02.2013