Я написал скрипт PHP, который делает запрос к поисковой системе, обращается к полученным результатам, извлекает некоторые детали из результатов и затем печатает их в более полезной форме.Потоковая печать с PHP
Все работает хорошо, но что-то, что я случайно обнаружил, заключается в том, что вызов эха или печати в ожидании передачи данных может привести к потоку потока. В частности, есть несколько страниц результатов, поэтому я обращаюсь к первой странице, читаю и перепечатываю содержимое, затем перехожу к следующей странице и, ожидая загрузки следующей страницы, содержимое предыдущей страницы становится видимым в браузера.
Я не понимаю, почему это происходит так непоследовательно. Иногда только одна страница будет напечатана, прежде чем переходить на следующую страницу, иногда меньше и иногда больше. Затем, когда я делаю в основном одно и то же потом (читайте на странице, на который каждый результат указывает), выход практически не транслируется, перерисовывается каждую минуту или около того.
Я использую file_get_contents($url)
для извлечения содержимого и вызова функции с echo
, чтобы напечатать загруженное на данный момент. Является ли это потоковое поведение печати особенностью браузера и независимо от того, что я пишу на PHP? Если нет, то как его можно контролировать лучше?
Спасибо, это, безусловно, похоже на то, что я искал, но он все еще не работает должным образом. Я прочитал документацию и комментарии, покраснел все сто раз с самого начала и получил ob_flush() после каждого интересного отпечатка, но он по-прежнему печатает на странные интервалы (каждые 13 результатов, когда их 10 на странице). Может быть проблема с размером куска? Я установил его в 3 байта в php.ini, так что это должно было исправить его. Возможно, я должен перезапустить сервер ... – orlade
Может ли быть проблема с вашим алгоритмом? В противном случае я не уверен, почему он будет печатать каждые 13 результатов. Может быть, есть что-то странное с вашим веб-сервером? – GWW
А, понял. Мне пришлось называть 'ob_flush();' и затем 'flush();' также (в этом порядке, я считаю), а не только один или другой, и я должен был делать это каждый раз. Путаница. Отлично работает сейчас, спасибо! – orlade