Вы можете буферизовать и контролировать вывод из скрипта PHP.
Однако вы можете рассмотреть масштабируемость этого проекта. В общем, тяжелые процессы не должны выполняться в Интернете. Ваш конкретный случай может быть преимуществом в том, что ожидание приемлемо, но рассмотрите что-то вроде этого как альтернативу для улучшения взаимодействия с пользователем:
- Пользователь запускает процесс. Это может быть так же просто, как установить флаг для записи в базе данных или вставить в данные некоторые записи, подлежащие обработке.
- Пользователь немедленно направляется на страницу, указывающую, что процесс был поставлен в очередь.
- Автономный процесс (запускаемый сценарием PHP на сервере или запланированный регулярный запуск) проверяет данные и выполняет тяжелую обработку.
- Тем временем пользователь может обновить страницу (вручную, перейдя в другое место и вернуться к проверке, или даже использовать механизм опроса AJAX для обновления страницы), чтобы проверить состояние обработки. В этом случае кажется, что в таблице базы данных будет несколько сотен записей, поставленных в очередь для обработки. По завершении каждого из них его можно пометить как выполненное Страница может просто проверить, сколько осталось, какой из них текущий и т. Д. По данным.
- Когда обработка завершена, на странице отображается результат.
В целом, это удобнее для пользователя, поскольку не заставляет пользователя ждать. Пользователь может перемещаться по сайту и проверять прогресс по желанию Кроме того, этот подход лучше масштабируется. Если ваша тяжелая обработка выполняется непосредственно на странице, что происходит, когда у вас много пользователей или нагрузка на обработку данных увеличивается? Будет ли время ожидания для страницы? Будут ли пользователи ждать дольше? Сделав так, чтобы процесс происходил за пределами веб-сайта, вы можете перегрузить его на более качественное оборудование, если это необходимо, убедитесь, что записи обрабатываются последовательно / параллельно в соответствии с требованиями бизнес-правил (избегайте условий гонки), сохраняйте обработку в непиковые часы и т. Д. .