Signatur
Beschreibung
zip_entry_compressedsize() ermittelt die komprimierte Größe eines einzelnen Eintrags innerhalb eines ZIP-Archivs. Der Rückgabewert entspricht der Anzahl an Bytes, die der Eintrag nach der Komprimierung im Archiv belegt – also der tatsächlich gespeicherte Platzbedarf auf dem Datenträger.
Diese Funktion gehört zur älteren, prozeduralen ZIP-API von PHP (zusammen mit zip_open(), zip_read() und zip_entry_open()). Sie ist nützlich, wenn man z. B. Fortschrittsanzeigen beim Entpacken umsetzen oder vor dem Entpacken prüfen möchte, wie groß die komprimierte Datei ist.
Im Unterschied dazu liefert zip_entry_filesize() die unkomprimierte Originalgröße. Durch den Vergleich beider Werte lässt sich die Kompressionsrate eines einzelnen Eintrags berechnen.
Hinweis: Die prozedurale ZIP-Erweiterung gilt als veraltet. Für neue Projekte empfiehlt sich die objektorientierte Klasse ZipArchive, die deutlich mehr Funktionalität und bessere Fehlerbehandlung bietet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $zip_entry Pflicht | resource | Eine gültige ZIP-Eintrags-Ressource, wie sie von zip_read() zurückgegeben wird. |
Rückgabewert
Beispiele
Komprimierte Größe aller Einträge in einem ZIP-Archiv ausgeben
<?php
$zip = zip_open('/var/www/archiv.zip');
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$name = zip_entry_name($entry);
$compressedSize = zip_entry_compressedsize($entry);
$originalSize = zip_entry_filesize($entry);
echo "Datei: $name\n";
echo " Komprimiert : $compressedSize Byte\n";
echo " Original : $originalSize Byte\n";
if ($originalSize > 0) {
$ratio = round((1 - $compressedSize / $originalSize) * 100, 1);
echo " Ersparnis : $ratio %\n";
}
}
zip_close($zip);
} else {
echo "Fehler: ZIP-Archiv konnte nicht geöffnet werden.\n";
}
?>
Gesamte komprimierte Größe aller Einträge summieren
<?php
$zip = zip_open('/var/www/archiv.zip');
$totalCompressed = 0;
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$totalCompressed += zip_entry_compressedsize($entry);
}
zip_close($zip);
echo "Gesamtgröße (komprimiert): $totalCompressed Byte\n";
} else {
echo "Fehler beim Öffnen des Archivs.\n";
}
?>
// Wichtig · Fallstricke
Veraltete API: Die prozedurale ZIP-API (zip_open, zip_read, zip_entry_*) wird nicht mehr aktiv weiterentwickelt. Ab PHP 8.0 wurde sie als deprecated eingestuft und sollte durch die ZipArchive-Klasse ersetzt werden, die über ZipArchive::statIndex() ebenfalls Informationen zur komprimierten Größe liefert (Feld comp_size).
Die Funktion gibt 0 zurück, wenn der Eintrag ein Verzeichnis ist oder keine komprimierten Daten enthält. Eine Fehlerprüfung auf false ist bei dieser Funktion nicht vorgesehen.