現在の位置: ホーム> 最新記事一覧> [PHPはZiparchiveを使用して圧縮パッケージでファイル圧縮率を表示します]

[PHPはZiparchiveを使用して圧縮パッケージでファイル圧縮率を表示します]

M66 2025-06-22

Ziparchiveを使用して、PHPの圧縮パッケージで各ファイルの圧縮率を表示する方法

毎日の開発では、ZIP圧縮ファイルを使用して、ストレージスペースとトランスミッション帯域幅を保存することがよくあります。圧縮性能を評価するには、圧縮パッケージ内の各ファイルの圧縮率を理解することが特に重要です。 PHPは強力なZiparchiveクラスを提供し、それで簡単にこれを達成できます。

zipファイルを開き、ziparchiveオブジェクトを初期化します

まず、 ziparchiveインスタンスを作成し、zipファイルを開く必要があります。

 
$zip = new ZipArchive;
$zipFile = 'path/to/archive.zip';

if ($zip->open($zipFile) === true) {
    // 後続の圧縮率分析ロジック
} else {
    echo '開くことができませんZIP書類';
}

zipのファイルを繰り返して、圧縮率を計算します

zipファイルを開いた後、その中の各ファイルを通過して、元のサイズと圧縮サイズを取得することにより、圧縮率を計算できます。

 
$totalSizeBefore = 0;
$totalSizeAfter = 0;

for ($i = 0; $i < $zip->numFiles; $i++) {
    $fileName = $zip->getNameIndex($i);
    $stat = $zip->statIndex($i);
    $sizeBefore = $stat['size'];
    $sizeAfter = $stat['comp_size'];

    $totalSizeBefore += $sizeBefore;
    $totalSizeAfter += $sizeAfter;

    $compressionRate = ($sizeBefore - $sizeAfter) / $sizeBefore * 100;

    echo "書類名:{$fileName}<br/>";
    echo "圧縮前のサイズ:{$sizeBefore} bytes<br/>";
    echo "圧縮サイズ:{$sizeAfter} bytes<br/>";
    echo "圧縮率:{$compressionRate}%<br/>";
    echo "<br/>";
}

$averageCompressionRate = ($totalSizeBefore - $totalSizeAfter) / $totalSizeBefore * 100 / $zip->numFiles;

echo "总圧縮前のサイズ:{$totalSizeBefore} bytes<br/>";
echo "总圧縮サイズ:{$totalSizeAfter} bytes<br/>";
echo "平均圧縮率:{$averageCompressionRate}%<br/>";

$zip->close();

論理的な説明とアプリケーションの範囲

上記のコードでは、すべてのファイルの圧縮の前後の累積サイズを表す、それぞれ2つの合計変数$ totalsizebebebefeber$ totalsizefterを維持します。横断プロセス中に、各ファイルの圧縮速度が計算され、最後に全体の平均圧縮効果が得られます。

この方法は、既存のZIPファイルの内容の分析にのみ適していることに注意してください。 ZIPを生成するときにリアルタイムで圧縮率を取得する場合は、最初にFile_Get_Contentsを介してファイルの内容を読み取り、次にGZCompressで圧縮をシミュレートして圧縮効率を推定できます。

要約します

PHPに付属するZiparchiveクラスを使用すると、ZIP圧縮パッケージのファイル圧縮率をすばやく表示できます。これは、圧縮アルゴリズムのパフォーマンスの評価、圧縮ロジックの最適化、およびリソースの節約に非常に役立ちます。プロジェクトにこの要件がある場合は、上記の方法を試して実装することもできます。