Bei der Verarbeitung von Zip -Dateien in PHP werden häufig zwei Funktionen zip_entry_open () und zip_read () verwendet. Sie sind alle Teil der Zip -Erweiterung von PHP, die hauptsächlich zum Lesen von Inhalten in komprimierten Paketen verwendet wird. Viele Entwickler haben jedoch Zweifel an der Aufrufreihenfolge bei der Verwendung: Welche Funktion sollte ich zuerst aufrufen? In diesem Artikel wird die richtige Verwendung und Vorsichtsmaßnahmen dieser beiden Funktionen im Detail erläutert.
Zip_read ()
Wird verwendet, um den nächsten Eintrag in der ZIP -Datei zu lesen, die dem Durchqueren der Dateien im komprimierten Paket entspricht.
Der Rückgabewert ist ein Zip -Einstiegsgriff des Ressourcentyps , und wenn es bis zum Ende gelesen wird, gibt er false zurück.
ZIP_ENTRY_OPEN ()
Wird verwendet, um einen ZIP -Eintrag zu öffnen, der von ZIP_READ () gelesen wird, damit auf den Inhalt zugegriffen werden kann.
Nur wenn zip_entry_open () aufgerufen wird, kann der aktuelle Eintrag gelesen werden, z. B. die Verwendung von zip_entry_read (), um den Inhalt zu erhalten.
Die richtige Reihenfolge für den Betrieb einer ZIP -Datei mit diesen beiden Funktionen ist:
$zip = zip_open('http://m66.net/path/to/yourfile.zip');
if (is_resource($zip)) {
while ($entry = zip_read($zip)) { // Rufen Sie zuerst an zip_read() Holen Sie sich den nächsten Eintrag
if (zip_entry_open($zip, $entry)) { // Nutze wieder benutzen zip_entry_open() Öffnen Sie diesen Eintrag
$content = '';
while ($data = zip_entry_read($entry, 1024)) {
$content .= $data; // Lesen Sie den Eintragsinhalt durch
}
echo "Entry name: " . zip_entry_name($entry) . "\n";
echo "Content length: " . strlen($content) . "\n";
zip_entry_close($entry); // Schließen Sie den aktuellen Eintrag
}
}
zip_close($zip); // Schließung ZIP Ressource
}
Um zusammenzufassen:
Erster Anruf zip_read () , um jeden Dateieintrag im ZIP -Paket zu durchqueren.
Rufen Sie bei jedem Eintrag ZIP_ENTRY_OPEN () an, um sie zu öffnen.
Lesen Sie den Eintragsinhalt;
Den Eintrag schließen;
Bis alle Einträge durchquert werden.
ZIP_ENTRY_OPEN () ist eine Funktion, die den aktuellen ZIP -Eintrag zum Lesen von Inhalten öffnet, aber nur, wenn Sie zuerst einen Eintragsressourcenhandle erhalten müssen, der über ZIP_READ () erhalten wird.
Wenn Sie zuerst zip_entry_open () aufrufen, da es kein Einstiegsgriff gibt, fällt die Funktion aus, was dazu führt, dass der Eintrag nicht geöffnet werden kann.
Es wird kein Urteil darüber getroffen, ob der Rückgabewert von Zip_read () falsch ist
Dies führt dazu, dass nachfolgende zip_entry_open () Fehler gemeldet werden. Die zyklische Strukturprüfung sollte verwendet werden.
Eintrags- oder Zip -Ressource nicht geschlossen <br> Dies kann zu Ressourcenleckage und Programmleistungsverschlechterung führen.
Lesen Sie Reißverschluss direkt mit der Datei -URL
Stellen Sie sicher, dass die PHP -Konfiguration die Öffnung von Dateien im URL -Formular ermöglicht ( ZEULN_URL_FOPEN muss aktiviert werden).
ZIP_READ () wird verwendet, um den nächsten Dateieintrag im komprimierten Paket zu erhalten, und ist der Ausgangspunkt des Traverses.
ZIP_ENTRY_OPEN () wird verwendet, um den von zip_read () zurückgegebenen Eintrag zu öffnen und den Dateiinhalt vorzubereiten.
Wenn Sie es verwenden, sollten Sie zuerst zip_read () aufrufen und dann zip_entry_open () aufrufen. Nur wenn die beiden zusammen verwendet werden, können der Inhalt der ZIP -Datei korrekt gelesen werden.
Durch das Beherrschen der korrekten Anrufauftrag können Sie ZIP -Dateien effizient und stabil verarbeiten und häufige Fehler vermeiden.