В процесі роботи php-скрипти можуть виводити результати по мірі виконання закладеного в них сценарію або накопичувати дані, чекаючи повного виконання сценарію і завершення роботи скрипта. Вибір одного з цих варіантів залежить від значення, присвоєного в настройках інтерпретатора php змінної, що відповідає за буферизацію виводу даних. Змінити його можна кількома способами.
Інструкція
- Якщо відключити буферизацію виводу потрібно для всіх виконуваних на сервері або на сайті php-скриптів, найправильніше зробити це через файл php.ini. При запуску кожного скрипта інтерпретатор мови php читає налаштування з цього файлу конфігурації, тому помістити в нього директиву відключення буферизації виведення результатів роботи скриптів — найбільш оптимальне рішення. Відкрийте файл в будь-якому текстовому редакторі і за допомогою діалогу пошуку знайдіть директиву з назвою output_buffering. Її значенням може бути як целочисленная, так і логічна (On або Off) змінна, тому замість присвоєного за замовчуванням значення впишіть Off або 0. Якщо цієї директиви немає в конфігураційному файлі, додайте в кінець записів додатковий рядок:
output_buffering = Off
- При необхідності скасувати буферизацію виводу для скриптів окремої папки або групи вкладених папок, краще зробити це через файл htaccess. Знайдіть його в потрібному каталозі і відкрийте в текстовому редакторі. Якщо такого файлу ще немає, створіть новий. Директива, яку слід додати, аналогічна описаній в попередньому кроці, але перед нею треба помістити позначку про те, що мова йде про одну з настройок php. Повністю цей рядок має виглядати так:
php_flag output_buffering off
Створений файл htaccess помістіть у верхню папку ієрархії каталогів, для яких повинна виконуватися директива.
- Щоб відключити буферизацію в одному окремо взятому php-скрипті, використовуйте одну з вбудованих функцій цієї мови. ob_get_flush () повертає поточний зміст буфера, потім обнуляє його і відключає буферизацію виводу. ob_end_flush () робить те ж саме, але поточний зміст буфера не повертає в викликала її зміну, а відправляє на пристрій виводу. Функція ob_end_clean () просто стирає поточні дані перед відключенням буферизації. Скориставшись однією з цих функцій, не забудьте знову включити буферизацію — для цього призначена функція ob_start ().