Как запускать параллельные задачи на PHP?

При клике на ссылку пользователем должна запускаться задача.
Среднее время выполнения одной задачи 12 часов. В каждой задаче выполняется несколько тысяч действий с определённым временным интервалом, между каждым действием (10-60 сек.). Суть в том, что пользователь может запускать несколько задач и все они должны выполняться параллельно, таких пользователей может быть много (10-1000 чел.).
Копал в сторону Gearman, но он выполняет задачи по очереди, а создавать много воркеров как мне кажется не рационально, ибо я не могу знать сколько будет пользователей, когда и по сколько задач они будут запускать.

Если же всё таки стоит использовать Gearman и много воркеров, то подскажите на сколько это ресурсо-затратно?
  • Вопрос задан
  • 700 просмотров
Решения вопроса 1
konst20
@konst20
Программист, преподаватель, немного электронщик
Лихая задача.
Что бы вы ни делали, все будет ресурсозатратно, а ну ка, у вас в онлайне 1000 чел запустили по нескольку задач, которые делают по нескольку тысяч действий ))
Не вижу проблемы в том, чтобы запустить много воркеров. Вы можете использовать вот эту мою разработку для автоматического запуска и остановки воркеров, там есть класс, из которого можно управлять воркерами.
https://habrahabr.ru/post/212761/
Алгоритм: появилась задача - бросаем ее на сервер очередей - запускаем один воркер. Задача выполнилась - останавливаем один воркер.

Воркеры можно располагать на разных серверах. Можно мониторить, на каком сервере по скольку воркеров запущено, и догружать свободные.
Таким образом, задача с помощью Gearman превращается в распределенную.
Сам по себе Gearman ресурсов почти не потребляет. Ресурсы будут потреблять воркеры, но от этого вам никак вообще не уйти - воркеры ведь решают задачу, чем бы вы ни решали задачу, вы потребите те же самые ресурсы.

Еще. Вам не нужно для распределения задачи несколько Gearman. Вам нужен один сервер очередей Gearman, на котором регистрируются воркеры с разных серверов. Вообще введите в курс задачи подробнее где-то в личке, я смогу помочь более предметно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Согласен с Константин Кияшко
От себя добавлю: копайте по ключевым словам "worker pool" --- есть много готовых полуфабрикатов для создания воркеров и воркер пулов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы