Как идея, я иногда думаю, что лучше выполнять такие сценарии, используя версию php для командной строки из регулярно запланированного задания cron. (В противном случае обработка прекратится, если httpd по какой-либо причине будет перезапущен и т. Д.)
Таким образом, вы будете использовать веб-сайт для регистрации того факта, что вам нужно запустить задание фоновой обработки (например, в таблице базы данных) и загрузить любые данные, которые нужно обработать. Выполненный cron PHP-скрипт затем проверит наличие любых отложенных заданий в базе данных, пометит задание как незавершенное после его запуска, а затем обновит поле «процент выполнения» в таблице базы данных, которое веб-сайт может прочитать - следовательно информирование пользователя о прогрессе.
Когда обработка будет завершена, PHP соответствующим образом обновит базу данных, пометив задание как обработанное и при необходимости отправив электронное письмо пользователю и т. Д.
Примечание: Вы можете с пользой расширить этот подход, добавив некоторые базовые поля даты и времени для начала и окончания обработки, что позволяет легко проверять наличие заданий, выполнявшихся в течение длительного периода времени, и т. Д. .