@VanZan

Как сделать параллельный запуск другого процесса?

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

Проблема заключается в том, что известные мне способы дёрганья других скриптов из PHP (EXEC, CURL и т.п.) ждут, пока запрошенный скрипт отработает, ну или таймаут истечёт.

Также это приводит к тому, что на время выполнения тяжёлого процесса админка зависает, т.к. происходит блокировка сессии пользователя, даже если какой-нибудь nginx уже вернул 504 gateway time-out.

Вопрос:

Как правильно запускать другие процессы из PHP и не дожидаться завершения их выполнения?
Подскажите подход/функцию/команду.
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 3
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Проблема заключается в том, что известные мне способы дёрганья других скриптов из PHP (EXEC, CURL и т.п.) ждут, пока запрошенный скрипт отработает, ну или таймаут истечёт.
exec или shell_exec ($comand. '> /dev/null 2>/dev/null &');
Оно?
Ответ написан
Комментировать
solotony
@solotony
покоряю пик Балмера
fork не подходит ?

"правильно" из веб процесса не вызывать тяжелый процесс напрямую, а сделать отдельный процесс, который получает сообщения из веб процесса и выполняет тяжелые обработки - например форкает свою копию которая начинает обработку, а сам продолжает слушать новые команды.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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