PHP-скрипты в этом случае выполняются в контексте запроса веб-сервера, поэтому вы не можете перестать разговаривать с веб-соединением, а затем продолжить работу, что, как я думаю, вы пытаетесь сделать с закрытием соединения.
Причина, по которой вы видите вывод в конце, заключается в том, что в конце скрипта PHP вызовет неявный сброс (см. Ob_implicit_flush в руководстве), но вы закрываете соединение с браузером, заканчивая скрипт PHP.
Пути вокруг этого:
Возможно, вы сможете использовать set_time_limit для увеличения лимита исполнения. НЕ ИСПОЛЬЗУЙТЕ НОЛЬ. Соблазнительно сказать «возьми столько времени, сколько нужно» в сценарии пост-обработки, но в этом и заключается сумасшествие и горькие системные администраторы, и помните, что вы все еще работаете с секундомером тайм-аута curl (хотя вы можете расширить его как опцию). set_time_limit (5) даст вам еще пять секунд, поэтому периодически это позволит вам выполнить постобработку, но - если вы будете осторожны - все равно защитит вас от бесконечных циклов. Инфинити-циклы без ограничений на выполнение в контексте запросов Apache также могут сделать вас непопулярными с вашим системным администратором.
Может быть возможно создать сценарий оболочки в вашем приложении, сохранить его на диск, выполнить , который в фоновом режиме, и после этого удалить его. Таким образом, он будет работать вне контекста веб-запроса, и если сценарий все еще существует, когда вы в следующий раз выполните запрос, вы можете знать, что другая обработка все еще происходит. Будьте очень осторожны с вещами, которые могут занять больше времени, чем ваш разрыв между казнями, так как это приводит к печали и большему количеству горьких системных администраторов. Этот курс действий может выкинуть вас из моей среды хостинга, если вы сделаете это, не поговорив сначала со мной об этом, поскольку это ужасный взлом с множеством возможных проблем безопасности.
Но вы, похоже, пытаетесь запустить обычный пакетный процесс в системе, где они не хотят, чтобы вы это делали - или они бы дали вам доступ к cron - поэтому ваш лучший и самый надежный способ - найти хост, который фактически поддерживает то, что вы пытаетесь сделать.