Как справляться с такого рода задачами?

vanicon

Новичок
Всем привет!
Думаю многие делали скрипты для подтверждения регистрации по email, resize картинок и другие задачи которые занимают значительное время. Хотелось бы что бы такие операции выполнялись бы в фоновом режиме...
Стал искать решение этой проблемы...
И на глаза попался Gearman, читал про него в интернете но статей по существу достаточно мало, мол все так просто и легко...
По сути вот что получается, если я правильно понял принцип его работы, то клиент записывает задачу в gearman, и потом к нему должен подключить рабочий(worker) что бы выполнять эти записанные задачи.
Я почему то думал что gearman должен сам вызывать свободных workerov...
И в связи с этим, я подумал может быть если сделать бесконечный процесс(скрипт) который будет всегда слушать gearman(в бесконечном цикле), и как тока появится задача он начнет ее выполнять, иными словами worker.
Но так как задач необходимо выполнять достаточно(email, resize, тяжелые запросы к бд и тд) то я решил что для этого нужно хотябо 2 workera, то есть 2 вечно живущих процесса которые постоянно слушают gearman и исполняют задачи.
Не знаю может быть у кого есть уже опыт с gearman или же можно еще как нибудь это реализовать? Правилен ли мой подход?
 

dadoc

Новичок
Подход верный. Внутри gearman будут очереди разных задач - email, resize (то что Вы написали), а workers будут из этих очередей их выдергивать, email worker будет работать с email задачами и т.д. Причем может быть запущено и два и три email worker и они будут параллельно обрабатывать всё что добавляется в очередь email.

Еще можете погуглить "supervisord gearman workers"
 

Absinthe

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

WMix

герр M:)ller
Партнер клуба
cron?, и слушателя достаточно одного, назови его диспечер, который ничего другого не делает кроме как слушает queue и по получению задачи, запускает обработчика и передает ему все параметры...
 

WMix

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

SiZE

Новичок
А кто скрипт будет запускать? Или проверять что он запущен? Если не крон.
 

Absinthe

жожо
А кто скрипт будет запускать? Или проверять что он запущен? Если не крон.
нужно вспомнить что скрипт нужно запустить, чтот недодумал, скрипт упал, незнаю,.. куча всего
rc-скрипт.


хочу думать о php как о конечном файле, с началом и концом, пусть с циклом повтора по по времени
Сервисы(чат, видео, сфинкс и т.д.) явно не вписываются в твою концепцию.
 

WMix

герр M:)ller
Партнер клуба
для медиасерверов буду брать медиасервер, чат и так читается клиентом, туда крон не нужен...
rc-script альтернатива, согласен!
 

WMix

герр M:)ller
Партнер клуба
Данные кто и как отдавать будет, уже придумал?
погоди сейчас угадаю, скрипт который кружиться правильно?

фигня все это, вызвал url получил json никаких кронов и rc если только для апача с мускулом, но я то надеюсь что это включено...
разговор о другом есть кью, его нужно на сервере обрабатывать, можно написать скрипт, далее 3 варианта либо его запустит крон либо как ты гришь на уровне системного старта либо ручками... опять же можно и через URL
 

WMix

герр M:)ller
Партнер клуба
мне много в чат ненужно пару сотен выдержит... если будет задача писать чат на огромное число пользователей, буду думать иначе... возможно кластеров понаделаю "кучку маленьких минимиров", уменьшу частоту запросов... подумаю про PUSH-Service, возможно IRC к чему ты сейчас..
 
Сверху