Aсинхронную очередь заданий для PHP?

Я разрабатываю веб сайт на Yii фреймворке, планируется что сайт будет высоко нагруженный (до 200,000 в день). Мне нужно будет обрабатывать картинки, отправлять почту и т.п. ну и нужно делать это асинхронно. Раньше я с таким не сталкивался и не знаю что выбрать. Посоветуйте что-нибудь.



UPD: всем спасибо, я склоняюсь к Gearman, но еще почитаю о RabbitMQ
  • Вопрос задан
  • 7461 просмотр
Пригласить эксперта
Ответы на вопрос 9
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Есть сервер заданий — gearman — про него недавно статья как раз была. PHP с ним вполне работает — может как посылать задачи на него, так и получать и выполнять.
Ответ написан
Ответ написан
Комментировать
EXSlim
@EXSlim
gearman
Ответ написан
Комментировать
taliban
@taliban
php программист
3 человека в секунду это очень даже не высокие нагрузки
Для рассинхронизации можете себе завести в бд (или где-то еще) табличку с заданиями и потом кроном выбирать по 10-20 заданий и обрабатывать их.
Ответ написан
MuXaJIbI4
@MuXaJIbI4
зачем ломать голову над тем чего еще нет? :)

а насчет многопоточности можешь попробовать это github.com/amal/AzaThread
Ответ написан
Комментировать
sad
@sad
Если выбор ваш падет все же на Gearman, советую обратить внимание на менеджер воркеров github.com/brianlmoon/GearmanManager. Мы его используем на своем проекте, с небольшими модификациями (кстати, тоже с Yii):
  • новый класс приложения, который содержит в себе и запускает менеджер;
  • новый механизм парсинга конфига, такой, что бы менеджер понимал свои же опции из конфига Yii;

Заодно еще пару советов по работе воркеров с менеджером:
  • не пользуйтесь опцией max_worker_lifetime отличной от 0. Лучше в конце работы делать:
    $this->sendComplete($result);
    exit(0);

    Так можно освободить ресурсы без боязни, что менеджер перезапустит воркер в середине его активной работы.
  • выставьте auto_update = 0, особенно в продакшне.

Успехов.
Ответ написан
@egorinsk
> высоконагруженный
> 200.000 в день
Ответ написан
Комментировать
@phasma
Если у тебя очереди только FIFO планируются, то можно юзать Gearman, если планируется LIFO, то он уже не подойдет. Вообще для очередей отлично подойдет Redis, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы