Phar::startBuffering

(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 1.0.0)

Phar::startBufferingЗапускает буферизацию операций записи, отключая запись изменений Phar-архива на диск

Описание

public Phar::startBuffering ( void ) : void

Метод 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();
?>

Смотрите также

  • Phar::stopBuffering() - Останавливает буферизацию и записывает все изменения на диск
  • Phar::isBuffering() - Проверить, будут ли операции с Phar-архивом буферизованы или записаны напрямую на диск