На самом деле, скрипт будет работать до тех пор, пока не выполнится целиком или пока не достигнет
max_execution_time (параметр в
php.ini), обычно он равен 30 секундам, но при возможности доступа к php.ini вы можете выставить это время вплоть до бесконечности. Если PHP запущен из консоли - этот параметр не действует, но это не Ваш случай. А то, что вы подразумеваете под "концом страницы" - не более чем
сброс буфера, но не стоит забывать, что на веб-сервере может быть свой буфер, который возможно тоже придётся настроить, что бы сервер не "висел" в ожидании.
То есть алгоритм такой, вы запускаете скрипт, как следствие AJAX-запроса, отправляете в вывод данные, которые Вам нужны (через print/echo), когда последняя порция данных отправлена - делаете
flush(), и... скрипт продолжает работать дальше.
Так же, буфер автоматически сбрасывается (отправляется в браузер и/или промежуточный сервер) при завершении работы скрипта, именно по этому "конец работы скрипта" у Вас ассоциируется с "концом страницы".