Position actuelle: Accueil> Derniers articles> Comment utiliser zip_entry_compressedSize ()? Conseils pratiques pour lire des fichiers compressés avec la fonction zip_read

Comment utiliser zip_entry_compressedSize ()? Conseils pratiques pour lire des fichiers compressés avec la fonction zip_read

M66 2025-06-26

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.

1. Qu'est-ce que ZIP_ENTRY_COMPRESSIDSIZE ()

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.

2. Compléter des exemples à utiliser avec zip_read ()

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";
}

illustrer:

3. Exemples de scénarios d'utilisation

1. Afficher le rapport de compression

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";

2. Filtrage et classification des fichiers

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";
}

4. Cas réel: Lisez le contenu dans le fichier zip à distance

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);
}

5. Choses à noter

  • 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.

6. Conclusion

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.