(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 1.0.0)
Phar::startBuffering — Запускает буферизацию операций записи, отключая запись изменений Phar-архива на диск
Метод Phar::startBuffering() может дать значительный прирост производительности при создании, либо модификации phar-архива с большим количеством файлов. Обычно, когда добавляется новый файл, либо изменяется существующий, запускается операция пересоздания phar-архива. С включенной буферизацией архив будет пересоздан один раз в самом конце внесения изменений.
Эта концепция работает аналогично транзакции в базе данных, что позволяет сделать вне необходимые изменения и применить их одновременно, в рамках одной операции. Такое поведение обеспечивает пара методов Phar::startBuffering()/Phar::stopBuffering().
Настройки буферизации индивидуальны для каждого архива. Включенная буферизация для foo.phar никак не влияет на режим работы с bar.phar.
Эта функция не возвращает значения после выполнения.
Пример #1 Пример использования Phar::startBuffering()
<?php
// удалим на всякий случай
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
} catch (Exception $e) {
echo 'не могу создать phar:', $e;
}
echo 'В новом phar содержится ' . $p->count() . " записей\n";
$p->startBuffering();
$p['file.txt'] = 'hi';
$p['file2.txt'] = 'there';
$p['file2.txt']->setCompressedGZ();
$p['file3.txt'] = 'babyface';
$p['file3.txt']->setMetadata(42);
$p->setStub("<?php
function __autoload($class)
{
include 'phar://myphar.phar/' . str_replace('_', '/', $class) . '.php';
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
?>