Phar::stopBuffering

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

Phar::stopBuffering停止将写入请求缓冲到 Phar 归档文件,并将更改保存到磁盘

说明

public Phar::stopBuffering(): void

Phar::stopBuffering()Phar::startBuffering() 方法一起使用。 Phar::startBuffering() 在创建或修改包含大量文件的 Phar 归档文件时可以提供显著的性能提升。通常情况下,每次以任何方式在 Phar 归档文件中创建或修改文件时,整个 Phar 归档文件都将重新创建,并包含所做的更改。通过这种方式,归档文件将与对它执行的操作保持同步。

但是,当仅仅创建新的 Phar 归档文件时,这可能是不必要的,因为一次性写入整个归档文件更有意义。同样,在对磁盘进行任何更改之前,通常需要进行一系列更改,并确保这些更改都能够成功,类似于关系数据库中事务的概念。 Phar::startBuffering()/Phar::stopBuffering() 方法对就是为了这个目的而提供的。

Phar 写缓冲是针对每个归档文件的,对于 foo.phar Phar 归档文件激活的缓冲不会影响对 bar.phar 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();"

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top