Есть ли разница в выходе между php 4 и 5? - PullRequest
0 голосов
/ 21 декабря 2009

На днях я заметил, что новый скрипт, написанный мною для php 5, начал выводить html, который был доступен для просмотра до того, как скрипт php фактически завершился. Это случилось с 4?

Например, у меня есть длинный цикл, который выводит что-то с каждой итерации. Вывод был небольшой с точки зрения КБ, поэтому я не думаю, что это было отставание из-за скорости загрузки. Может кто-нибудь объяснить разницу в выводе?

Ответы [ 4 ]

6 голосов
/ 21 декабря 2009

Может быть, есть разница в конфигурации директивы output_buffering , в php.ini?

Если output_buffering включено, PHP "сохранит" сгенерированный вывод в памяти (по крайней мере, если он не станет больше размера буфера памяти) и только отправит его в браузер, когда генерация страницы завершена.

Если output_buffering отключено, выходные данные отправляются сразу же после генерации, даже если выполнение скрипта еще не завершено.

5 голосов
/ 21 декабря 2009

Я сомневаюсь, что есть разница в этом отношении между PHP 4 и 5, но вы можете получить это поведение в обеих версиях, а именно, включив / отключив output_buffer. Может быть, значение по умолчанию для PHP 5 отличается от того, которое было для PHP 4? (Не проверено)

1 голос
/ 22 декабря 2009

Обычные подозреваемые:

Внимательно изучите phpinfo () инструмента, чтобы увидеть, что HTTP-заголовки могут вам помочь.

1 голос
/ 22 декабря 2009

Когда данные отправляются, они зависят от конфигурации PHP, это выходной буфер и ведет себя как буфер.

Сказав это, вы можете использовать функции ob_start() и ob_end_flush() для управления буфером. Zend Framework делает некоторые умные вещи с буферизацией вывода, например ...

...