zip_entry_compressedsize()
Die Funktion zip_entry_compressedsize() gibt die komprimierte Größe einer Datei in einem ZIP-Archiv zurück. Sie ist seit PHP 8.0 nicht mehr verfügbar.
Die Funktion zip_entry_compressedsize() ist eine veraltete Funktion aus der PHP-Erweiterung zip. Sie gibt die komprimierte Größe eines einzelnen Eintrags in einem geöffneten ZIP-Archiv zurück – das heißt, die Anzahl der Bytes, die die Datei nach der Komprimierung tatsächlich auf dem Datenträger belegt, was in der Regel kleiner als ihre ursprüngliche Größe ist.
Diese Seite erklärt, was die Funktion zurückgab, wie sie verwendet wurde und – am wichtigsten – was stattdessen verwendet werden sollte, da die Funktion in PHP 7.4 als veraltet markiert und in PHP 8.0 entfernt wurde. Bei jeder modernen PHP-Installation (8.0 oder höher) verursacht ihr Aufruf einen fatalen Error. Verwenden Sie daher die unten gezeigte Klasse ZipArchive.
Warum die komprimierte Größe wichtig ist
Jede in einem ZIP-Archiv gespeicherte Datei hat zwei Größen:
- Unkomprimierte Größe — die ursprüngliche Bytegröße der Datei. Siehe
zip_entry_filesize(). - Komprimierte Größe — die Bytegröße nach der Verkleinerung durch den Deflate-Algorithmus. Das ist das, was
zip_entry_compressedsize()zurückgab.
Der Vergleich der beiden Werte ergibt das Kompressionsverhältnis. Gut komprimierbarer Text kann auf 20 % seiner ursprünglichen Größe schrumpfen, während bereits komprimierte Daten (JPEGs, MP3s) sich kaum verändern. Die komprimierte Größe zu kennen ist nützlich für Fortschrittsanzeigen, Speicherplanung und die Entscheidung, ob eine erneute Komprimierung lohnenswert ist.
Syntax
Die Syntax der Funktion zip_entry_compressedsize() lautet wie folgt:
Syntax der Funktion zip_entry_compressedsize() in PHP
int zip_entry_compressedsize(resource $zip_entry)Dabei ist $zip_entry das von zip_read() zurückgegebene ZIP-Eintrags-Handle für die Datei im ZIP-Archiv. Die Funktion gibt die komprimierte Größe als ganzzahlige Anzahl von Bytes zurück. Beachten Sie, dass diese Funktion zur veralteten zip-Erweiterung gehört und in PHP 8.0+ nicht mehr verfügbar ist.
Verwendungsbeispiele
Schauen wir uns ein praktisches Beispiel für die Verwendung von zip_entry_compressedsize() in PHP an.
Beispiel: Komprimierte Größe einer Datei in einem ZIP-Archiv ermitteln
Angenommen, Sie haben ein ZIP-Archiv mit den veralteten PHP-ZIP-Funktionen geöffnet und möchten die komprimierte Größe einer Datei im Archiv ermitteln. Sie können dazu die Funktion zip_entry_compressedsize() verwenden:
Ermitteln der komprimierten Größe einer Datei in einem ZIP-Archiv in PHP
$zip = zip_open("example.zip");
if ($zip === false) {
die("Failed to open zip archive.");
}
$zip_entry = zip_read($zip);
if ($zip_entry === false) {
die("Failed to read zip entry.");
}
// get the compressed size of the file
$compressed_size = zip_entry_compressedsize($zip_entry);
echo "The compressed size of the file is: " . $compressed_size . " bytes.";Dieser Code öffnet die ZIP-Archivdatei example.zip mit zip_open(). Anschließend wird eine Datei im Archiv mit zip_read() gelesen und ihre komprimierte Größe mit zip_entry_compressedsize() abgerufen. Schließlich wird die komprimierte Größe ausgegeben. In einem echten Skript würden Sie zip_read() in einer Schleife aufrufen, um alle Einträge durchzugehen, und zip_close() aufrufen, wenn Sie fertig sind.
Moderne Alternative: Verwendung von ZipArchive
Da die veralteten zip_*-Funktionen in PHP 8.0 entfernt wurden, wird empfohlen, stattdessen die eingebaute Klasse ZipArchive zu verwenden. So können Sie die komprimierte Größe einer Datei mit ZipArchive ermitteln:
$zip = new ZipArchive;
if ($zip->open('example.zip') === true) {
$index = $zip->locateName('example.txt');
if ($index !== false) {
$stat = $zip->statIndex($index);
$compressedSize = $stat['comp_size']; // equivalent of zip_entry_compressedsize()
$uncompressedSize = $stat['size']; // original size
echo "Compressed: {$compressedSize} bytes\n";
echo "Uncompressed: {$uncompressedSize} bytes\n";
if ($uncompressedSize > 0) {
$ratio = round(100 * (1 - $compressedSize / $uncompressedSize), 1);
echo "Space saved: {$ratio}%\n";
}
}
$zip->close();
}Die Methode statIndex() gibt ein assoziatives Array zurück, das den Eintrag beschreibt. Ihr Schlüssel comp_size enthält die komprimierte Größe, die die veraltete Funktion früher zurückgab, und size enthält die unkomprimierte Größe. Da beide verfügbar sind, können Sie das Kompressionsverhältnis direkt berechnen, wie oben gezeigt.
Fazit
In diesem Artikel haben wir die veraltete Funktion zip_entry_compressedsize() besprochen und erklärt, wie sie verwendet wurde, um die komprimierte Größe einer Datei in einem ZIP-Archiv zu ermitteln. Wir haben ihre Syntax erläutert, warum die komprimierte Größe wichtig ist, ein veraltetes Beispiel mit grundlegender Fehlerbehandlung bereitgestellt und eine moderne Alternative mit der Klasse ZipArchive samt Berechnung des Kompressionsverhältnisses gezeigt. Für aktuelle PHP-Versionen (8.0+) sollten Sie stets ZipArchive bevorzugen, um fatale Fehler zu vermeiden und die Kompatibilität sicherzustellen.
Siehe auch
zip_entry_filesize()— gibt die unkomprimierte Größe eines Eintrags zurück.zip_entry_name()— gibt den Namen eines Eintrags zurück.zip_entry_compressionmethod()— zeigt an, wie der Eintrag komprimiert wurde.zip_read()undzip_open()— öffnen ein Archiv und iterieren über seine Einträge.- PHP-Zip-Erweiterungsübersicht — die moderne Klasse
ZipArchive.