File_Archive の使用例のひとつとして考えられるのは、 ギャラリーの画像や動画のファイルから動的にアーカイブを生成することです。
効率的に生成することを考えるなら、どのファイルフォーマットを選択するかが大事です。 選択肢をあげてみましょう。
利点: 効率よく作成できてメモリの使用量が一定、キャッシュは不要
欠点: 圧縮ができない (とはいえ、もともと画像や動画はそれ以上に圧縮するのは困難です)、 また Zip ほど広く知れ渡っていない
ここでは Tar と Zip を取り上げます。Tgz や Tbz は、 アーカイブを "その場で" 作成するには CPU を食いすぎます。
<?php require_once "File/Archive.php"; // $files は、アーカイブに追加するファイルへのパスの配列です File_Archive::extract( $files, File_Archive::toArchive( 'myGallery.tar', File_Archive::toOutput() ) ); ?> |
Zip を使用する最大の利点は、リソースをあまり消費しないこと (結果をキャッシュできるので) と幅広く用いられている形式であることです。 とりうる方法は二通りあります。まずは未圧縮の Zip アーカイブを作成すること (画像ファイルや動画ファイルは、もともとそれ以上の圧縮を期待できないため)、 もうひとつはキャッシュシステムを利用して圧縮済みの Zip アーカイブを作成することです。
例 43-1その場での未圧縮 ZIP アーカイブの作成
|
例 43-2その場での圧縮 ZIP アーカイブの作成 (キャッシュを使用)
|
zip の作成と tar の作成はほとんど同じコードとなるので、 ユーザの選択内容に応じて処理を切り替えるコードをすっきりと書くことができます。 次のコードは、実際に私のサイトで使用しているものです。
例 43-3カスタムアーカイブ
|