Вы можете сохранить текущее состояние индикатора хода выполнения в файле, кэше оперативной памяти или базе данных и написать другой скрипт, который просто возвращает это состояние. Затем вы реализуете AJAX, который получает эту информацию, а затем запускаете новый запрос AJAX и так далее, пока процесс не будет завершен.
Я бы предложил что-то вроде «долгоживущего HTTP-соединения» с использованием AJAX. Передайте состояние в вашем ajax-запросе, и если прогресс не изменился в PHP, просто спите, пока он не изменится.
Как это (состояние в%):
AJAX request: progress.php?state=0
AJAX response: state: 10
AJAX request: progress.php?state=10
-- on server side it is still 10%, so sleep the php progress until it changes and then reply
AJAX response: state: 11
....
А поскольку для ajax-запроса истекло время ожидания, просто запустите новый запрос, как только истечет время ожидания запроса.
Я надеюсь, это то, что вы имели в виду.