Создание асинхронных задач

186
17 сентября 2018, 11:50

Ни разу не работал с асинхронностью в PHP. По большей части оно и не надо, но у меня такая задача: юзер жмет кнопочку, делается запрос который вроде как запускает задачу по конвертации некоторых файлов. Но конвертация - дело довольно длительное, а запрос должен быстро вернуться. Поэтому я хочу чтобы этот запрос как-бы запустил какую-то асинхронную задачу и тут же возвращался не дожидаясь выполнения. По выполнении даже ничего делать не нужно - запишет статус в базу что все сконвертировано и ок. Подскажите как такое сделать? Какую-то библиотеку нужно использовать?

Answer 1

Используйте официальное расширение yii2-queue

Как применять смотрите в документации: https://github.com/yiisoft/yii2-queue/blob/master/docs/guide-ru/usage.md

Answer 2

Если в процессе ничего не нужно возвращать (progress bar, например), а также в результате будет только "готово", то можете реализовать обычным Ajax запросом.

Сценарий:

  1. Отправляется Ajax запрос с нужным файлом на сервер
  2. На сайте вместо кнопки Submit появляется загрузчик (иконка), типа: Loading...
  3. По завершению выполнения PHP отправляет ответ обратно клиенту. Тогда же убирается Loader и отображается Complete!

PS: Если пользователю дозволено листать сайт на момент "процесса", то можно также работать с Cookie + JS timeout (ну или node.js).

READ ALSO
Установка drush 8.*

Установка drush 8.*

Пытаюсь установить drush глобальноПосле команды: Получаю сообщение следующего содержания: После этого ничего не происходит, подскажите...

168
Вопрос на счёт функций

Вопрос на счёт функций

Хочу написать скрипт, который будет работать с базой данныхНо у меня возникли проблемы с реализацией функций

186
WordPress не понимает <?php

WordPress не понимает <?php

Возникла следующая проблема

202
ProgressBar при переходе между страницами сайта.

ProgressBar при переходе между страницами сайта.

Есть страница A и страница БКак при плохом качестве подключения пользователю показывать ProgressBar

188