Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поток вывода
 
 автор: demonow   (07.03.2012 в 18:32)   письмо автору
 
 

В одной из книг меня сбило с толку выражение "... затем PHP выводит содержимое в поток вывода,тоесть в браузер"
Хотелось бы уточнить, поток вывода это ведь вывод чего-то на в какуе-то программу сразу после выполнения, например в bash результат операции всех утилит выходит в тоже окно где были они запущены.
А в php после echo строки ну или что там, не залетают ведь прямиком в браузер, а сначало формируется html страница, куда вствляется все echo.А уже потом браузер читает то, что вывело echo.Так ведь.?

  Ответить  
 
 автор: .....   (07.03.2012 в 20:17)
 
   для: demonow   (07.03.2012 в 18:32)
 

грубо говоря в sdtout
процесс сервера (в зависимости от того как запускается интерпритатор) может в свою очередь заполнять буфер из этого захваченного stdout и посылать например по 4кБайт а может просто сам быть хозяином этого потока и так-же буферизовать

можно управлять потоком вывода
flush — Сброс буфера вывода
ob_clean — Очищает (стирает) буфер вывода
ob_end_clean — Очищает (стирает) буфер вывода и отключает буферизацию вывода
ob_end_flush — Сброс (отправка) буфера вывода и отключение буферизации вывода
ob_flush — Сброс (отправка) буфера вывода
ob_get_clean — Получить содержимое буфера и очистить его
ob_get_contents — Возвращает содержимое буфера вывода
ob_get_flush — Сброс буфера вывода, возвращая его содержимое и отключение буферизации вывода
ob_get_length — Возвращает размер буфера вывода
ob_get_level — Возвращает уровень вложенности механизма буферизации вывода
ob_get_status — Получить статус буфера вывода
ob_gzhandler — callback-функция, используемая для gzip-сжатия буфера вывода при вызове ob_start
ob_implicit_flush — Функция включает/выключает неявный сброс
ob_list_handlers — Список всех используемых обработчиков вывода
ob_start — Включение буферизации вывода
output_add_rewrite_var — Добавить обработчик значений URL
output_reset_rewrite_vars — Сброс значений установленных обработчиком URL

  Ответить  
 
 автор: .....   (07.03.2012 в 20:21)
 
   для: demonow   (07.03.2012 в 18:32)
 

>ток вывода это ведь вывод чего-то на в какуе-то программу сразу после выполнения

чтобы перенаправить вывод в другую консольную программу обычно в коммандной строке выполняется что-то вроде

dir | sort

вместо dir например может быть php --help

  Ответить  
 
 автор: .....   (07.03.2012 в 20:34)
 
   для: .....   (07.03.2012 в 20:21)
 

полезнее команда
php -i | more

  Ответить  
 
 автор: cheops   (08.03.2012 в 13:46)   письмо автору
 
   для: demonow   (07.03.2012 в 18:32)
 

>А в php после echo строки ну или что там, не залетают ведь прямиком в браузер, а сначало
>формируется html страница, куда вствляется все echo.А уже потом браузер читает то, что вывело
>echo.Так ведь.?
Не совсем, читает сначала Apache, а уж он отправляет данные браузеру. Так вот Apache и PHP "общаются" через стандартный поток вывода и переменные окружения. Если Apache есть что сказать PHP-скрипту, он заполняет переменные окружения, если PHP-скрипту есть что сказать Apache - он пишет данные в стандартный поток. Приведенная выше фраза, просто укорочена, в ней пропущена подробная цепочка. Автор как бы говорит: ну вы понимаете, что PHP на сервере, а браузер за тысячи километров у клиента, но не писать же мне всю эту цепочку, тем более речь сейчас немного о другом. Для PHP-программы формирование страницы выглядит так, как если bash-срипт просто выводил бы данные в консоль, но благодаря Apache и сетевой инфраструктуре выглядит это так, как если бы он это выводил в браузер клиента.

  Ответить  
 
 автор: demonow   (08.03.2012 в 17:07)   письмо автору
 
   для: cheops   (08.03.2012 в 13:46)
 

Все понял спасибо, просто уточнял.
----если PHP-скрипту есть что сказать Apache - он пишет данные в стандартный поток. >>
Тоесть через операторы echo и подобные вставляет текст и другую инф в html страницу и потом передает пользователю?
--Вообще я так понял поток вывода касается всего что выводит программа на устройство чтения..

  Ответить  
 
 автор: cheops   (08.03.2012 в 20:59)   письмо автору
 
   для: demonow   (08.03.2012 в 17:07)
 

>Тоесть через операторы echo и подобные вставляет текст и другую инф в html страницу и потом
>передает пользователю?
>--Вообще я так понял поток вывода касается всего что выводит программа на устройство чтения..
Да, совершенно верно, echo, print, fpassthru и ряд других, все они пишут в стандартный поток, его подхватывает Apache и переправляет пользователю в ответ на запрос PHP-скрипта. Если PHP-скрипт выводит HTML-страницу пойдет HTML-страницу, если он выводит содержимое JPG-файла, пойдет JPG-файл.

  Ответить  
 
 автор: demonow   (08.03.2012 в 21:03)   письмо автору
 
   для: cheops   (08.03.2012 в 20:59)
 

Спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования