Потоковая печать с PHP - PullRequest
       28

Потоковая печать с PHP

1 голос
/ 17 января 2011

Я написал PHP-скрипт, который отправляет запрос в поисковую систему, получает доступ к обслуженным результатам, извлекает некоторые детали из результатов и затем печатает их в более полезной форме.

Все работает хорошо, но кое-что, что я обнаружил случайно, заключается в том, что вызов echo или print во время ожидания потоковой передачи данных может также привести к потоковой передаче.В частности, имеется несколько страниц результатов, поэтому я захожу на первую страницу, читаю и перепечатываю содержимое, затем перехожу на следующую страницу и, ожидая загрузки следующей страницы, содержимое предыдущей страницы становится видимым вбраузер.

Я не понимаю, почему это происходит так непоследовательно.Иногда перед переходом на следующую страницу будет напечатана ровно одна страница, иногда меньше, а иногда и больше.Затем, когда я делаю в основном то же самое потом (читай на странице, на которую указывает каждый результат), вывод практически не передается, перерисовывается каждую минуту или около того.

Я использую file_get_contents($url) для извлечениясодержимое и вызов функции с echo для печати того, что было загружено до сих пор.Является ли это поведение потоковой печати функцией браузера и не зависит от того, что я пишу на PHP?Если нет, то как можно лучше контролировать?

1 Ответ

5 голосов
/ 17 января 2011

Самое простое решение - использовать выходную буферизацию .Основная идея состоит в том, чтобы вызвать ob_start() в начале вашего сценария, а затем вызвать ob_end_flush(), когда вы хотите, чтобы содержимое страниц было отправлено клиенту.Это сохранит все ваши выходные данные, пока вы не захотите, чтобы программа их отправила.

...