(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
Phar::stopBuffering — Detener las peticiones de escritura en buffer del archivo Phar, y guardar los cambios en disco
Phar::stopBuffering() se usa junto con el método Phar::startBuffering(). Phar::startBuffering() puede proporcionar un aumento significativo de rendimiento al crear o modificar un archivo Phar con un gran número de ficheros. Normalmente, cada vez que un fichero dentro de un archivo Phar es creado o modificado de alguna manera, el archivo Phar entero se re-creará con los cambios. De esta forma, el archivo estará actualizado con la actividad realizada sobre él.
Sin embargo, esto puede ser innecesario al crear simplemente un nuevo archivo Phar, que tendría más sentido escribir el archivo entero de una vez. De forma similar, a menudo es necesario realizar una serie de cambios y asegurarse de que todos son posibles antes de hacer cualquier cambio en disco, similar al concepto de transacciones en bases de datos relacionales. La pareja de métodos Phar::startBuffering()/Phar::stopBuffering() está prevista para este propósito.
La escritura en buffer de Phar es por archivo, el almacenamiento activo en buffer del
archivo Phar foo.phar
no afecta a los cambios
hechos al archivo Phar bar.phar
.
No devuelve ningún valor.
Se lanza una excepción de tipo PharException si se encontró algún problema volcando los cambios al disco.
Ejemplo #1 Un ejemplo de Phar::stopBuffering()
<?php
$p = new Phar(dirname(__FILE__) . '/nuevo_phar.phar', 0, 'nuevo_phar.phar');
$p['fichero1.txt'] = 'hola';
$p->startBuffering();
var_dump($p->getStub());
$p->setStub("<?php
function __autoload(\$clase)
{
include 'phar://nuevo_phar.phar/' . str_replace('_', '/', \$clase) . '.php';
}
Phar::mapPhar('nuevo_phar.phar');
include 'phar://nuevo_phar.phar/incio.php';
__HALT_COMPILER();");
$p->stopBuffering();
var_dump($p->getStub());
?>
El resultado del ejemplo sería:
string(24) "<?php __HALT_COMPILER();" string(195) "<?php function __autoload($clase) { include 'phar://' . str_replace('_', '/', $clase); } Phar::mapPhar('nuevo_phar.phar'); include 'phar://nuevo_phar.phar/incio.php'; __HALT_COMPILER();"