Phar->begin
(no version information, might be only in CVS)
Phar->begin -- Phar の変更トランザクションを開始する
説明
void
Phar->begin ( void )
技術的には必須ではありませんが、begin()
メソッドを使用すると、大量のファイルを含む Phar
アーカイブの作成や変更が非常に高速になります。
通常は、Phar アーカイブ内のファイルが作成あるいは変更されるたびに
Phar アーカイブ全体を改めて作り直します。
これによって、アーカイブが常に最新の状態となります。
しかし、単に新しい Phar アーカイブを作りたいときや
アーカイブ全体を一度に書き出したいときなどは、これは不要です。
同様に、いくつかの変更を行うときに、
すべての変更がうまくいったことを確認してから実際にディスクに書き込みたい
ということもあるでしょう。
これは、ちょうどデータベースのトランザクションの概念と同じようなものです。
begin()/commit()
の両メソッドが、このような場合のために用意されています。
Phar のトランザクションは、アーカイブ単位で管理されます。
Phar アーカイブ foo.phar
上のトランザクションが、Phar アーカイブ bar.phar
に影響をおよぼすことはありません。
例
例 1. Phar->begin() の例
<?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->begin(); $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://' . str_replace('_', '/', $class); } Phar::mapPhar('myphar.phar'); include 'phar://myphar.phar/startup.php'; __HALT_COMPILER();"); $p->commit(); ?>
|
|