Страницы

Поиск по вопросам

вторник, 17 декабря 2019 г.

Очередь задач в PHP

#очередь #php #yii


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

Даже набросал табличку в БД, но решение получилось не универсальным. Созданная очередь
задач умеет выполнять только шелл скрипты, а мне бы хотелось научить ее выполнять еще
логику на PHP, и чтобы результаты обоих случаев складывались в БД. 

Слышал о RabbitMQ, Apache Message Queue, но мне кажется, что они слишком избыточны
для моего случая. Мне нужно-то, делать некоторые проверки на сервере (тут как раз пригодился
бы способ выполнения PHP кода, и в зависимости от результата продолжалось бы выполнение
задач, или нет), и манипулировать учетными файлами, и просто "тяжелыми" файлами.

Где можно было почитать как организовывать подобные вещи? Может кто сталкивался уже
с этим, и нашел решение?

Проект создается на базе фреймворка Yii.
    


Ответы

Ответ 1



Воркер на пхп и запускать его по крону. Не?

Ответ 2



ПО мере создания своего проекта столкнулся с проблемой такого плана - есть некоторые действия пользователей, которые могут длиться до нескольких минут. Это ужасно! Это следствие плохой структуры БД и скриптов. Что такого может выполняться, да к тому же у каждого пользователя по минуте по две? Ладно обработка нескольких таблиц с математическими действиями по подсчете скидок у 16К клиентов и 25К заказов. Тут да у меня на серваке до 8 минут считаются, но раз в день и для всех сразу, а не для каждого по отдельности. Я даже набросал табличку в БД, и все бы хорошо, но решение получилось не универсальным. Созданная очередь задач умеет выполнять только шелл скрипты, а мне бы хотелось научить ее выполнять еще логику на php, и чтобы результаты обоих случаев складывались в БД. В Yii есть консольные приложения(и тут), юзай их. Делай там и логику и операции с данными. Не нужно изобретать с данном случае велосипед.

Комментариев нет:

Отправить комментарий