Как асинхронно выполнить скирпт php?

Добрый день! Есть скрипт на php, который обычно исполняется через cli, но тут возникла необходимость предоставлять пользователям его выполнять через браузер. По той причине, что выполняется он очень долго, браузер говорит time out. Цель - получить нажатие от пользователя, отобразить ok и в этот момент запустить скрипт, который будет выполняться пару минут асинхронно. Подскажите пожалуйста, как это сделать?
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 3
shurshur
@shurshur
Сисадмин, просто сисадмин...
Поднять time limit в php, чтобы скрипт успевал выполниться.

Вариант - разбить задачу скрипта на части, которые бы укладывались в лимит, и вызывать их поочерёдно.

Ещё лучше вынести сложную обработку в отдельный процесс, который, например, будет находить необработанные данные в некоторой таблице и обрабатывать, а веб-интерфейс будет раз в секунду опрашивать скриптик, который просто вернёт текущий статус обработки.

В общем, есть варианты.
Ответ написан
Комментировать
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Возьмите любой асинхронный фреймворк на php:
RoadRunner
ReactPHP

С помощью него запускайте свой воркер
И результат через веб-сокет отдавайте на клиент
Ответ написан
Комментировать
pOmelchenko
@pOmelchenko
php-developer
Реализовать очереди для запуска кли скрипта.

клиент приходи, оставляет запрос на обработку данных. После выполнения работы кли-скриптом у клиента появится ответ. Ответ получать либо периодической проверкой по апи, либо поднимать сокет соединение, чтобы клиенту сразу прилетал ответ
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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