Signatur
Beschreibung
rar_close() schließt ein zuvor mit rar_open() geöffnetes RAR-Archiv und gibt alle intern genutzten Ressourcen frei. Die Funktion ist das prozedurale Gegenstück zur Methode RarArchive::close().
Nach dem Aufruf von rar_close() sollte die Variable, die das RarArchive-Objekt enthielt, nicht mehr verwendet werden, da das Archiv ungültig wird. Jeder weitere Zugriff auf das geschlossene Archiv oder auf daraus extrahierte RarEntry-Objekte führt zu einem Fehler.
Es ist gute Praxis, RAR-Archive nach der Verarbeitung explizit zu schließen, insbesondere wenn viele Archive in einer Schleife geöffnet werden, um Ressourcenlecks zu vermeiden. In modernen PHP-Versionen mit dem PECL-RAR-Modul empfiehlt sich alternativ die objektorientierte Schreibweise $archive->close().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $rarfile Pflicht | RarArchive | Das RarArchive-Objekt, das mit rar_open() geöffnet wurde und nun geschlossen werden soll. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn das übergebene Archiv bereits geschlossen oder ungültig ist).Beispiele
RAR-Archiv öffnen, Einträge auflisten und schließen
<?php
$archive = rar_open('/pfad/zum/archiv.rar');
if ($archive === false) {
die('Fehler beim Öffnen des RAR-Archivs.');
}
$entries = rar_list($archive);
foreach ($entries as $entry) {
echo $entry->getName() . PHP_EOL;
}
// Archiv nach der Verarbeitung schließen
if (rar_close($archive)) {
echo 'Archiv erfolgreich geschlossen.';
} else {
echo 'Fehler beim Schließen des Archivs.';
}
Objektorientierte Schreibweise als Alternative
<?php
$archive = RarArchive::open('/pfad/zum/archiv.rar');
if ($archive === false) {
die('Archiv konnte nicht geöffnet werden.');
}
foreach ($archive->getEntries() as $entry) {
echo $entry->getName() . ' (' . $entry->getUnpackedSize() . ' Bytes)' . PHP_EOL;
}
// Schließen über Methode (äquivalent zu rar_close)
$archive->close();
echo 'Archiv geschlossen.';
// Wichtig · Fallstricke
Achtung: rar_close() ist Teil der PECL-Erweiterung rar, die separat installiert werden muss (pecl install rar). Sie ist nicht standardmäßig in PHP enthalten.
Nach dem Schließen eines Archivs werden alle davon abhängigen RarEntry-Objekte ungültig. Der Versuch, auf deren Methoden zuzugreifen (z. B. extract() oder getStream()), erzeugt Warnungen oder Fehler.
Bei der Verarbeitung großer Mengen von RAR-Archiven in Schleifen sollte rar_close() konsequent aufgerufen werden, um Speicher- und Datei-Handle-Lecks zu verhindern.