Выполнить PHP скрипт паралельно
Нужно при обращении пользователя к скрипту например index.php, внутри него выполнить функцию или скрипт паралельно, конкретно нужно обратися к API получить большой JSON и записать его в БД. Как вывести данные index.php не дожидаясь результатов обработки JSON.
Пробовал fsockopen(), но как то медленно получается, особенно если нужно паралелить два и более действия... Возможно существуют, какие то другие не сложные решения этой задачи на PHP.
Ответы (2 шт):
Если вы используете PHP-fpm, то функция fastcgi_finish_request() позволяет отправить Web серверу ответ без остановки самого PHP скрипта
https://www.php.net/manual/ru/function.fastcgi-finish-request.php
Если нужно отправить несколько запросов одновременно, попробуйте curl_multi_exec, это позволит отправить ваши запросы параллельно, но все равно быстрее чем время самого долгого запроса у вас не получится.
P.S. В идеале эту задачу стоит решать по другому:
- Пришел запрос, записали в БД его, отдали клиенту ответ "ждите, вот ваш ID"
- Клиент спрашивает, вот мой ID, что там ? вы ему отвечаете "ждите, ваш запрос обрабатывается"
- Обрабатываете запрос (крон, демон)
- При очередном запросе клиента "вот мой ID, что там ?" - возвращаете результат