Position actuelle: Accueil> Derniers articles> [PHP utilise Ziparchive pour afficher le rapport de compression de fichiers dans les packages compressés]

[PHP utilise Ziparchive pour afficher le rapport de compression de fichiers dans les packages compressés]

M66 2025-06-22

Comment utiliser Ziparchive pour afficher le taux de compression de chaque fichier dans un package compressé en PHP

Dans le développement quotidien, nous utilisons souvent des fichiers ZIP compressés pour économiser l'espace de stockage et la bande passante de transmission. Pour évaluer les performances de compression, il est particulièrement important de comprendre le taux de compression de chaque fichier dans le package compressé. PHP fournit une puissante classe ziparchive , et avec elle, nous pouvons facilement y parvenir.

Ouvrez le fichier zip et initialisez l'objet ziparchive

Tout d'abord, vous devez créer une instance ziparchive et ouvrir un fichier zip:

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

if ($zip->open($zipFile) === true) {
    // Logique d'analyse de taux de compression ultérieure
} else {
    echo 'Impossible d'ouvrirZIPdocument';
}

Itérer à travers des fichiers dans ZIP et calculer le taux de compression

Après avoir ouvert le fichier zip, vous pouvez calculer le taux de compression en traversant chaque fichier, en obtenant sa taille d'origine et sa taille compressée:

 
$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 "document名:{$fileName}<br/>";
    echo "Taille avant compression:{$sizeBefore} bytes<br/>";
    echo "Taille comprimée:{$sizeAfter} bytes<br/>";
    echo "Taux de compression:{$compressionRate}%<br/>";
    echo "<br/>";
}

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

echo "总Taille avant compression:{$totalSizeBefore} bytes<br/>";
echo "总Taille comprimée:{$totalSizeAfter} bytes<br/>";
echo "平均Taux de compression:{$averageCompressionRate}%<br/>";

$zip->close();

Description logique et portée de l'application

Dans le code ci-dessus, nous maintenons deux variables totales $ totalSizeBefore et $ totalsizafter , représentant respectivement la taille cumulative avant et après la compression de tous les fichiers. Pendant le processus de traversée, le taux de compression de chaque fichier est calculé et l'effet de compression moyen global est obtenu à la fin.

Il convient de noter que cette méthode ne convient que pour analyser les contenus existants du fichier zip. Si vous souhaitez obtenir le taux de compression en temps réel lors de la génération de ZIP, vous pouvez d'abord lire le contenu du fichier via File_get_Contents , puis simuler la compression avec GzCompress pour estimer l'efficacité de compression.

Résumer

Utilisez la classe Ziparchive fournie avec PHP peut rapidement afficher le taux de compression de fichiers dans le package de compression ZIP. Ceci est très utile pour évaluer les performances des algorithmes de compression, l'optimisation de la logique de compression et l'économie de ressources. Si vous avez cette exigence dans votre projet, vous pourriez aussi bien essayer la méthode ci-dessus pour la mettre en œuvre.