0

私は、プラグインを追加するためのモジュールシステムを備えたWebサイト(一種の骨抜きにされたCMS)の配布可能なフレームワークに取り組んでいます。アップロードしたアーカイブを使用してこれらのモジュールをインストールします。zip、bzip、gzip、rar、tarを使用できるようにします。私は少しグーグルをして、それらのファイルタイプのいくつかがzlib拡張子またはZipArchiveで処理できることを知っていますが、これらのパッケージのいずれかがそれらの許可されたファイルタイプの解凍をサポートするかどうかはわかりません。アーカイブを処理するためのサードパーティのクラス(主にpclzip)も調べましたが、ほとんどは数年前にリリースされ、最近の更新はありません。今の処理方法とそれらのパッケージの動作に違いがあるかどうかはわかりません。誰かがこの主題にもう少し光を当てることができれば、私は非常に感謝するでしょう。

4

2 に答える 2

0

それらすべてのライブラリを見つけるのは難しいでしょう。最も簡単な方法はsystem()、関連するユーティリティを実行して、提供されたファイルタイプを抽出することです。

于 2013-02-25T22:35:45.437 に答える
0

はい、それらはあり、言及されたすべてのアーカイブ タイプには拡張機能が存在します (参照: http://www.php.net/manual/en/refs.compression.php )。Mark が説明したように、バイナリ ツールを使用した大規模な解凍操作のほうが高速である可能性がありますが、ベンチマークは行っていません。

ZipArchive の使用方法の例を次に示します。他のドキュメントについては、ドキュメントを参照してください。

$z = new \ZipArchive();
if ($z->open("/some/path/the.zip") === true) {

    // extract all
    $z->extractTo("/some/path/output/folder");

    // extract by rel path
    if (($c = $z->getFromName("some/file/in/zip.txt")) !== false) {
        file_put_contents("/tmp/my-file.txt", $c);
    }

    // iterate all, print index: name
    for ($i = 0; $i < $z->numFiles; $i++) {
        $info = $z->statIndex($i);
        echo "File #$i: ". $info['name']. ' ('. $info['size']. " size)\n";
    }
    $z->close();
}

少し面倒なのは、さまざまなインターフェイスです。ラッパーを使用することをお勧めします。いくつかあります: https://packagist.org/search/?q=archive

于 2013-02-25T22:59:09.287 に答える