Lors du traitement des fichiers compressés ZIP, PHP fournit un ensemble très pratique d'interfaces fonctionnelles. ZIP_ENTRY_COMPRESSIMSIZE () est l'une des fonctions qui peuvent aider les développeurs à lire la "taille de données compressée" dans le fichier compressé. Cet article combinera la fonction zip_read () pour démontrer comment lire efficacement le contenu des fichiers compressés et des informations compressées connexes.
ZIP_ENTRY_COMPRESSIMSIZE () est une fonction utilisée pour obtenir la taille compressée d'une seule entrée dans un fichier zip. Cette fonction prend la poignée de ressource renvoyée par zip_read () en tant que paramètre et renvoie la taille compressée (en octets) de l'entrée compressée correspondante.
Le prototype de fonction est le suivant:
int zip_entry_compressedsize(resource $zip_entry)
L'utilisation typique de cette fonction consiste à obtenir le nombre d'octets compressés de chaque fichier lors de l'itération des entrées de fichiers compressées, afin d'analyser les taux de compression, d'évaluer les performances ou les caches pré-allocatives.
Utilisons le code suivant comme exemple pour montrer comment ouvrir un fichier zip, lire les entrées une par une et obtenir la taille compressée de chaque fichier.
$zipPath = '/path/to/example.zip';
$zip = zip_open($zipPath);
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
echo "nom de fichier: " . zip_entry_name($zip_entry) . "\n";
echo "Taille comprimée: " . zip_entry_compressedsize($zip_entry) . " octet\n";
echo "Taille d'origine: " . zip_entry_filesize($zip_entry) . " octet\n";
if (zip_entry_open($zip, $zip_entry)) {
$contents = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
// Le contenu peut être traité ici,Par exemple, enregistrer ou analyser
zip_entry_close($zip_entry);
}
echo "-----------------------------\n";
}
zip_close($zip);
} else {
echo "Impossible d'ouvrir ZIP document。\n";
}
zip_open () : ouvrez un fichier zip.
zip_read () : Lisez l'entrée suivante (c'est-à-dire le fichier ou le répertoire) à partir de zip.
zip_entry_compressedSize () : obtient la taille compressée de l'entrée.
zip_entry_filesize () : obtient la taille d'origine de l'entrée.
zip_entry_open () et zip_entry_read () : lisez le contenu du fichier.
Vous pouvez calculer le taux de compression en compressant la taille avant et après la compression, par exemple:
$compressed = zip_entry_compressedsize($zip_entry);
$original = zip_entry_filesize($zip_entry);
$rate = $original > 0 ? round(($compressed / $original) * 100, 2) : 0;
echo "Taux de compression: $rate%\n";
Vous pouvez rapidement filtrer les fichiers volumineux ou les fichiers de taux de compression élevés en fonction de la taille de la compression:
if (zip_entry_compressedsize($zip_entry) > 1024 * 100) {
echo "这是一个大document,Après compression, plus que 100KB。\n";
}
Si le fichier zip provient d'une télécommande, comme https://m66.net/files/archive.zip , vous pouvez d'abord utiliser File_get_contents () pour le télécharger dans le répertoire temporaire local, puis le traiter:
$tempFile = tempnam(sys_get_temp_dir(), 'zip');
file_put_contents($tempFile, file_get_contents('https://m66.net/files/archive.zip'));
$zip = zip_open($tempFile);
if (is_resource($zip)) {
// La logique suivante est la même que ci-dessus
zip_close($zip);
unlink($tempFile);
}
Cette fonction a des problèmes de compatibilité dans certaines anciennes versions de PHP. Il est recommandé d'utiliser la classe Ziparchive ci-dessus PHP 7 pour remplacer les fonctions de la série Zip_ * , mais dans certains scénarios, ZIP_ENTRY_COMPRESSISIZE () est plus intuitif.
Lors du traitement des packages compressés contenant un grand nombre d'entrées, il est recommandé d'effectuer la gestion de la mémoire et la gestion des erreurs pour éviter les fuites de ressources ou les accidents de serveur.
Grâce à la combinaison de zip_entry_compressedsize () et zip_read () , les développeurs peuvent facilement lire des informations détaillées dans des packages compressés, qui conviennent à l'analyse de journaux, à l'extraction de contenu de paquets distantes, aux services de décompression en ligne et à d'autres applications. La maîtrise de ces outils de base vous rendra plus qualifié dans le traitement des fichiers PHP.