Если вы находитесь в среде браузера, браузер через определенное время отключится, и поэтому перестанет прослушивать вывод из сценария, даже если сценарий продолжит работать.Это зависит от браузера, но число, которое я видел, составляет 30 секунд.
Чтобы преодолеть эту проблему, вы должны посылать вывод (даже если он бессмысленный echo "<!--empty comment-->";
) время от времени.
У меня недавно была похожая проблема, и я решил ее, не выводя никакого содержимого из скрипта, а вместо этого периодически опрашивая из браузера, используя AJAX, чтобы узнать, было ли это сделано.
Или не используйте браузерную среду (поскольку она не идеально подходит для этой проблемы), а вместо этого используйте приглашение командной строки, так как он не имеет (насколько мне известно) этих таймаутов.