Выполнить PHP скрипт паралельно

Нужно при обращении пользователя к скрипту например index.php, внутри него выполнить функцию или скрипт паралельно, конкретно нужно обратися к API получить большой JSON и записать его в БД. Как вывести данные index.php не дожидаясь результатов обработки JSON.

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


Ответы (2 шт):

Автор решения: Blacknife

Если вы используете PHP-fpm, то функция fastcgi_finish_request() позволяет отправить Web серверу ответ без остановки самого PHP скрипта

https://www.php.net/manual/ru/function.fastcgi-finish-request.php

→ Ссылка
Автор решения: razielsd

Если нужно отправить несколько запросов одновременно, попробуйте curl_multi_exec, это позволит отправить ваши запросы параллельно, но все равно быстрее чем время самого долгого запроса у вас не получится.

P.S. В идеале эту задачу стоит решать по другому:

  1. Пришел запрос, записали в БД его, отдали клиенту ответ "ждите, вот ваш ID"
  2. Клиент спрашивает, вот мой ID, что там ? вы ему отвечаете "ждите, ваш запрос обрабатывается"
  3. Обрабатываете запрос (крон, демон)
  4. При очередном запросе клиента "вот мой ID, что там ?" - возвращаете результат
→ Ссылка