Если вы хотите запустить скрипт PHP из скрипта PHP, почему бы просто не сделать:
require 'child.php';
Если вам нужно что-то сделать в фоновом режиме, используйте AJAX для запуска запроса.
Редактировать: нет никаких причин, по которым AJAX-запрос не может быть длительным, но вы выходите за рамки того, для чего PHP действительно был разработан. Но в любом случае, откажитесь от AJAX-запроса. Если для возвращения потребуется 20 минут, это не драма.
В качестве альтернативы вы можете запускать запрос AJAX каждые 15 секунд (выбрать номер), чтобы проверить статус того, что вы начали.
Для действительно длительных задач вам, вероятно, придется применить подход «забей и забудь». Запустите его и немедленно вернитесь. Но у него не будет информации о сеансе. Вам нужно будет хранить это.
Я бы предложил использовать какой-нибудь механизм персистентности, такой как таблица Джобса:
- Задание: идентификатор, запущен_, статус (не запущен, выполняется, завершен), запущен, когда завершен,
и вместо запуска таких заданий, как exec (), есть задание cron, которое ищет задания, которые нужно запустить, и запускает их. Это будет менее хрупким, чем подход, инициируемый веб-сервером.
У вас также будет отчет о состоянии, который вам нужно будет задать, если работа еще не завершена.