(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
Phar::stopBuffering — Останавливает буферизацию и записывает все изменения на диск
Метод Phar::stopBuffering() используется совместно с методом Phar::startBuffering(). Phar::startBuffering() может дать значительный прирост производительности при создании, либо модификации phar-архива с большим количеством файлов. Обычно, когда добавляется новый файл, либо изменяется существующий, запускается операция пересоздания phar-архива. С включённой буферизацией архив будет пересоздан один раз в самом конце внесения изменений.
Эта концепция работает аналогично транзакции в базе данных, что позволяет сделать вне необходимые изменения и применить их одновременно, в рамках одной операции. Такое поведение обеспечивает пара методов Phar::startBuffering()/Phar::stopBuffering().
Настройки буферизации индивидуальны для каждого архива.
Включённая буферизация для foo.phar
никак не влияет
на режим работы с bar.phar
.
У этой функции нет параметров.
Функция не возвращает значения после выполнения.
В случае проблем с записью на диск будет выброшено исключение PharException.
Пример #1 Пример использования Phar::stopBuffering()
<?php
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file1.txt'] = 'hi';
$p->startBuffering();
var_dump($p->getStub());
$p->setStub("<?php
function __autoload(\$class)
{
include 'phar://brandnewphar.phar/' . str_replace('_', '/', \$class) . '.php';
}
Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
var_dump($p->getStub());
?>
Результат выполнения приведённого примера:
string(24) "<?php __HALT_COMPILER();" string(195) "<?php function __autoload($class) { include 'phar://' . str_replace('_', '/', $class); } Phar::mapPhar('brandnewphar.phar'); include 'phar://brandnewphar.phar/startup.php'; __HALT_COMPILER();"