Фоновые задачи на php

Ragazzo

TDD interested
На хабре была статья хорошая с подбором ссылок http://habrahabr.ru/company/zfort/blog/155425/, там есть ссылка на описание того как работать с редис+ php для фоновых задач, меня интересует кто и что еще использует помимо этого для выполнения таких операций?Возникла ситуация что понадобится мне такое, поэтому решил спросить совета возможно кто-то уже имел опыт в подобной области.
 

fixxxer

К.О.
Партнер клуба
А мне классического велосипеда на форках и мыскля хватает. ;)
В либевентах смысла не вижу, т.к. фоновые задачи обычно cpu-bound
 

WMix

герр M:)ller
Партнер клуба
RabbitMQ и редис не разные ли вещи? одно это очередь другое чтото между базой данных и cacheм
тут вопрос а что делает фоновый режим....
 

fixxxer

К.О.
Партнер клуба
не вижу никаких проблем в использовании редиса для очередей. как впрочем любого хранилища, в котором есть хотя бы CAS ;)
 

WMix

герр M:)ller
Партнер клуба
я тоже нет, но вот RabbitMQ как базу будет сложнее
 

WMix

герр M:)ller
Партнер клуба
Зачем использовать менеджер очередей как базу?
воо... а как же без базы? значит связка всёже phpDaemon + RabbitMQ + База
не вижу никаких проблем в использовании редиса для очередей. как впрочем любого хранилища, в котором есть хотя бы CAS
значит можно и без RabbitMQ

далее разница между редиской и мускулом на столько огромна, mysql сделает все тоже самое что и редис, но размеры его огромные... порою хочется нечто маленькое...
на редис может и можно создать нечто подобное таблицам, но лучше не надо... но с другой стороны зная ключик ты добываешь значение с затратой близкой к еденице...
 

Ragazzo

TDD interested
Ну у нас фоновые задачи могут быть разные, начиная от применения каких-либо изменений в системе, и заканчивая выгрузкой статистики за большой период времени например. Я пока еще не смотрел очень подробно как лучше это сделать.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
воо... а как же без базы? значит связка всёже phpDaemon + RabbitMQ + База
Все от задач. Нам вот надо было например избыточность файликов создавать по нескольким серверам. Каждый сервер слушает свою очередь (несколько очередей), одноранговые сервера делятся заданиями в зависимости от уровня загруженности, и рапортуют по мере выполнения задач — весь load balancing рулится самим RabbitMQ на уровне подсчета отданных/завершенных/заданного максимума для клиента енвелопов.
Т.е. на фронтэнде я делаю что-то совершенно примитивное типа
PHP:
$rabbit->addMessage(array('reciever' => 'fileserver.scale', 'name' => 'somefile-to-copy.mp4', 'location' => 'fs004.domain'));
— и все. Контролировать, обработался ли запрос, когда обработался, кем обработался, кто получит, успешно ли было выполнение — все сделает RabbitMQ, которому достаточно один раз нормально очереди описать для этих задач.
 

WMix

герр M:)ller
Партнер клуба
я буквально это и сказал, все это 3 разных инструмента...
мы обрабатывали картинки, те, определение границ вырезка заднего фона, создание превьюшки.. эти задачи можно и без базы делать... использовал кью от апачей
после пришла задачка определение основного цвета "цветов".. и тут понадобилась база куда результат писать...
 

WMix

герр M:)ller
Партнер клуба
Очевидно, что писать ты будешь туда же, где потом будешь работать с этими данными.
я с ними не работал, это делал frondend отдел... все писали в монго...
там были предложения, один парсил их добавляя индификаторы продуктов, я брал картинки, на продукты, выискивал только большие и неодинаковые, далее действия выше и обратно в монго...
но была и своя база где только галлереи, то что показывалось графическому отделу для дальнейшей обработки
 

cDLEON

Онанист РНРСlub
Я с удовольствием выслушаю твое аргументированное мнение. Если оно у тебя есть, конечно.
Да оно как бы понятно из контекста. И аргументы там есть. И ты их знаешь.
PHP не предназначен для написания демонов по той простой причине, что готовых библиотек НЕТ! Тот же forking с обменом данными между процессами написать - пиши своё.
Потоков - нет. Возможны мемлики в стандартных библиотеках. Примитивный garbage collector. Мне продолжать?
 

AmdY

Пью пиво
Команда форума
cDLEON
самое смешное, что был собеседованиях и попалось целых 3 проекта, где использовали java+RabbitMQ+MySQL или Postgres и везде пришли как минимум к частичному переводу на php, потому что проще, дешевле писать и поддерживать. Хотя, конечно, зачем же java, если можно использовать честные функциональные языки типа хаскеля или хотя бы scala.
 

cDLEON

Онанист РНРСlub
AmdY
И что там прям так взяли и перевели на ПХП часть, которая работает с RabbitMQ ? Не верю ©.
 

Ragazzo

TDD interested
cDLEON
Ну дак ты что используешь в итоге то?т.е. например логика проекта на php, но нужно выполнять фоновые задачи, мы тебя поняли что для них ты против использования портов различных средств на php, что используешь то?
 

AmdY

Пью пиво
Команда форума
cDLEON
а куда деваться? что сделаешь, если разработка сайтов и серсисов с вебмордой на php на порядок выгоднее java. да и джависты это прекрасно поняли, вон какой заопарк развели на базе джава машины. кстати, вроде фэйсбук тоже пытается перевести php на джава машину. Там же не идиоты работают, чтобы сразу навалять хипхоп, затем пытаться перевести на другую виртуальную машину за ~6 человеколет, вместо того чтобы сменить язык.
 
Сверху