067 607 57 84
МЕНЮ

Буферизація виводу на PHP

Створення сайтів Львів

Часто бувають випадки, коли в деякому місці програми необхідно відправити заголовки, наприклад, для перезавантаження сторінки, а контент на висновок вже відправлений або контент, який виводиться раніше певної інформації, необхідно вивести після цієї інформації. У цьому випадку потрібно переписувати програму, можливо, змінювати алгоритм, що б добитися того, що потрібно. Але можна зробити простіше, для цього в PHP (скажімо прямо не тільки для цього) і придумали чудовий набір функцій починаються c префікса ob_, такі як ob_start(), ob_get_contents(), ob_end_clean() і інші.






Розглянемо на прикладі буферизацию виведення на PHP:
<?
echo 'test';
header('location:http://site.com'); //відправлений заголовок вже не спрацює, тому що на висновок вже відправлено слово "test"
exit();
?>
                    

Що б функція яка відправляє заголовки спрацювала, необхідно запустити буферизацію виводу. Це означає, що інформація яка виводиться на екран буде складатися в буфер, а не вирушати відразу на екран.

<?php
ob_start();
echo 'test';
header('location:http://site.com'); //тепер відправлений заголовок спрацює
exit();
?>
                    

На наступному прикладі видно, як вивести контент, який виводиться раніше визначеної інформації, після цієї інформації.

<?php
ob_start();
echo 'перший виведений контент';
$out=ob_get_contents(); //в змінну $out складають перший виведений контент
ob_end_clean(); //припиняємо буферизацию і очищаємо буфер
echo 'другий виведений контент';
echo $out; //виводимо перший виведений контент
?>
                    

В результаті перший контент буде виведений після другого, хоча і вирушав він на висновок раніше першого.