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.
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';
}
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();
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.
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.