Описанная методика выглядит красиво, но имеет несколько подводных камней:
1) время между началом и концом PHP-скрипта мало по сравнению со временем передачи; Кроме того, это экономит пользователю около 0,5 секунд, в зависимости от вашего источника. Это значительное количество времени для вас?
2) этот метод не работает с буферизацией вывода gzip
3) если вы выполняете сброс слишком часто, вы будете отправлять почти пустой пакет при сбросе, что может фактически увеличить время загрузки (при медленных и шумных соединениях).
4) после того, как вы сбросите, вы не сможете больше отправлять заголовки
5) (незначительная проблема) ответ сервера будет представлен в виде фрагментированной кодировки, что означает, что клиент не будет заранее знать размер (поэтому не будет отображать «x% done» при загрузке файла).
С другой стороны, если вы ожидаете, что ваш сценарий будет выполняться в течение более длительного времени (20+ секунд), может потребоваться отправить некоторые данные (например, пробелы), чтобы браузер не рассчитывал время ожидания соединения.