Почему ob get clean-очищает память без запуска буфера с ob start()?


Я был один день, делая тесты, анализировались, как функции влияют на использование памяти, и, по счастливой случайности, я назвал функцию ob_get_clean(). Я заметил, что вызов функции "сократился" размер памяти, используемый php.

ob_start() я заметил, что если увеличивается использование памяти, как и следовало ожидать, так как даже сохраняет вывод в буфер.

Сейчас не понимаю, почему ob_get_clean() "очистили" некоторое значение буфера, снижение памяти, причем ob_start() и не был вызван в любом месте кода.

Ниже результаты, которые я получил:

<?php
echo memory_get_usage(); //122224
?>

<?php
ob_get_clean();
echo memory_get_usage(); //113992
?>

Кто-нибудь знает, почему при вызове ob_get_clean() память уменьшилась?

Есть ли конфигурации в php.ini, который начинается буфера автоматически, или что-то типа?

Author: bfavaretto, 2014-03-26

1 answers

Да, есть.

В php.ini, как настроен параметр output_buffering ?

output_buffering=On

Активного выходного буфера автоматически.

Вы можете отключить его:

output_buffering=Off

, Или указать размер буфера:

output_buffering=4096

См. подробнее: Output Buffering в руководстве PHP

 2
Author: KveRa, 2015-08-18 11:54:44