Bei der Verarbeitung von Dateien mit ZIP -Komprimierung bietet PHP einen sehr bequemen Satz von funktionalen Schnittstellen. ZIP_ENTRY_COMPREEDSIZE () ist eine der Funktionen, mit denen Entwickler die "komprimierte Datengröße" in der komprimierten Datei lesen können. In diesem Artikel wird die Funktion zip_read () kombiniert, um zu demonstrieren, wie der Inhalt komprimierter Dateien und zugehöriger komprimierter Informationen effektiv gelesen werden kann.
ZIP_ENTRY_COMPREEDSIZE () ist eine Funktion, mit der die komprimierte Größe eines einzelnen Eintrags in einer ZIP -Datei erhalten wird. Diese Funktion nimmt den von zip_read () zurückgegebenen Ressourcenhandle als Parameter und gibt die komprimierte Größe (in Bytes) des entsprechenden komprimierten Eintrags zurück.
Der Funktionsprototyp lautet wie folgt:
int zip_entry_compressedsize(resource $zip_entry)
Die typische Verwendung dieser Funktion besteht darin, die Anzahl der komprimierten Bytes jeder Datei bei der Iterierung komprimierter Dateieinträge zu erhalten, um die Kompressionsraten, die Bewertung der Leistung oder vor dem Allocation-Caches zu analysieren.
Verwenden wir den folgenden Code als Beispiel, um anzuzeigen, wie eine ZIP -Datei geöffnet wird, die Einträge einzeln lesen und die komprimierte Größe jeder Datei erhalten.
$zipPath = '/path/to/example.zip';
$zip = zip_open($zipPath);
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
echo "Dateiname: " . zip_entry_name($zip_entry) . "\n";
echo "Druckgröße: " . zip_entry_compressedsize($zip_entry) . " Byte\n";
echo "Originalgröße: " . zip_entry_filesize($zip_entry) . " Byte\n";
if (zip_entry_open($zip, $zip_entry)) {
$contents = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
// Der Inhalt kann hier verarbeitet werden,Zum Beispiel speichern oder analysieren
zip_entry_close($zip_entry);
}
echo "-----------------------------\n";
}
zip_close($zip);
} else {
echo "Nicht öffnen können ZIP dokumentieren。\n";
}
ZIP_OPEN () : Öffnen Sie eine ZIP -Datei.
ZIP_READ () : Lesen Sie den nächsten Eintrag (d. H. Datei oder Verzeichnis) aus ZIP.
ZIP_ENTRY_COMPREEDSIZE () : Erhält die komprimierte Größe des Eintrags.
ZIP_ENTRY_FILESIZE () : Erhält die ursprüngliche Größe des Eintrags.
ZIP_ENTRY_OPEN () und ZIP_ENTRY_READ () : Lesen Sie den Dateiinhalt.
Sie können die Kompressionsrate berechnen, indem Sie die Größe vor und nach der Komprimierung komprimieren, z. B.:
$compressed = zip_entry_compressedsize($zip_entry);
$original = zip_entry_filesize($zip_entry);
$rate = $original > 0 ? round(($compressed / $original) * 100, 2) : 0;
echo "Druckrate: $rate%\n";
Sie können schnell große Dateien oder hohe Komprimierungsverhältnisdateien entsprechend der Komprimierungsgröße herausfiltern:
if (zip_entry_compressedsize($zip_entry) > 1024 * 100) {
echo "这是一个大dokumentieren,Nach der Komprimierung größer als 100KB。\n";
}
Wenn die ZIP -Datei aus einem Remote stammt, wie z.
$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)) {
// Die folgende Logik ist die gleiche wie oben
zip_close($zip);
unlink($tempFile);
}
Diese Funktion hat Kompatibilitätsprobleme in einigen alten Versionen von PHP. Es wird empfohlen, die Ziparchive -Klasse über Php 7 zu verwenden, um die Funktionen ZIP_* zu ersetzen, aber in einigen Szenarien ist zip_entry_compressedsize () intuitiver.
Bei der Verarbeitung komprimierter Pakete mit einer großen Anzahl von Einträgen wird empfohlen, die Speicherverwaltung und Fehlerbehandlung durchzuführen, um Ressourcenleckage oder Serverabstürze zu vermeiden.
Durch die Kombination von zip_entry_compressedsize () und zip_read () können Entwickler detaillierte Informationen in komprimierten Paketen problemlos lesen, die für die Protokollanalyse, die Extraktion von Remote -Paket -Inhalten, die Online -Dekompressionsdienste und andere Anwendungen geeignet sind. Wenn Sie diese grundlegenden Tools beherrschen, werden Sie in der PHP -Dateiverarbeitung kompetenter.