In der täglichen Entwicklung verwenden wir häufig Zip -komprimierte Dateien, um Speicherplatz und Getriebebandbreite zu sparen. Um die Komprimierungsleistung zu bewerten, ist es besonders wichtig, die Komprimierungsrate jeder Datei im komprimierten Paket zu verstehen. PHP bietet eine leistungsstarke Ziparchive -Klasse, und damit können wir dies leicht erreichen.
Zunächst müssen Sie eine Ziparchive -Instanz erstellen und eine ZIP -Datei öffnen:
$zip = new ZipArchive;
$zipFile = 'path/to/archive.zip';
if ($zip->open($zipFile) === true) {
// Nachfolgende Logik der Komprimierungsrate -Analyse
} else {
echo 'Nicht öffnen könnenZIPdokumentieren';
}
Nach dem Öffnen der ZIP -Datei können Sie die Komprimierungsrate berechnen, indem Sie jede Datei darin durchqueren, wodurch die ursprüngliche Größe und die Druckgröße erhalten werden:
$totalSizeBefore = 0;
$totalSizeAfter = 0;
for ($i = 0; $i < $zip->numFiles; $i++) {
$fileName = $zip->getNameIndex($i);
$stat = $zip->statIndex($i);
$sizeBefore = $stat['size'];
$sizeAfter = $stat['comp_size'];
$totalSizeBefore += $sizeBefore;
$totalSizeAfter += $sizeAfter;
$compressionRate = ($sizeBefore - $sizeAfter) / $sizeBefore * 100;
echo "dokumentieren名:{$fileName}<br/>";
echo "Größe vor der Komprimierung:{$sizeBefore} bytes<br/>";
echo "Druckgröße:{$sizeAfter} bytes<br/>";
echo "Druckrate:{$compressionRate}%<br/>";
echo "<br/>";
}
$averageCompressionRate = ($totalSizeBefore - $totalSizeAfter) / $totalSizeBefore * 100 / $zip->numFiles;
echo "总Größe vor der Komprimierung:{$totalSizeBefore} bytes<br/>";
echo "总Druckgröße:{$totalSizeAfter} bytes<br/>";
echo "平均Druckrate:{$averageCompressionRate}%<br/>";
$zip->close();
Im obigen Code behalten wir zwei Variablen $ TotalSizepefore und $ sotalSize danach bei, die die kumulative Größe vor und nach der Komprimierung aller Dateien darstellen. Während des Traversalprozesses wird die Komprimierungsrate jeder Datei berechnet und der Gesamtdurchschnittskomprimierungseffekt am Ende erhalten.
Es ist zu beachten, dass diese Methode nur zur Analyse vorhandener Zip -Dateiinhalte geeignet ist. Wenn Sie die Komprimierungsrate bei der ZIP -Generierung in Echtzeit erhalten möchten, können Sie zuerst den Dateiinhalt über File_Get_Contents lesen und dann die Komprimierung mit GZCompress simulieren, um die Komprimierungseffizienz abzuschätzen.
Verwenden Sie die Ziparchive -Klasse, die mit PHP geliefert wird, die Dateikomprimierungsrate im ZIP -Komprimierungspaket schnell anzeigen. Dies ist sehr hilfreich bei der Bewertung der Leistung von Komprimierungsalgorithmen, der Optimierung der Kompressionslogik und der Speichern von Ressourcen. Wenn Sie diese Anforderung in Ihrem Projekt haben, können Sie auch die obige Methode ausprobieren, um sie zu implementieren.