(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
Phar::stopBuffering — 停止緩衝 Phar 封存的寫入請求,並將變更儲存到磁碟
Phar::stopBuffering() 方法與 Phar::startBuffering() 方法搭配使用。當建立或修改包含大量檔案的 Phar 封存時,Phar::startBuffering() 可以顯著提升效能。一般情況下,每次在 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();"