Start · Sprachen · PHP · Referenz · rar_close

rar_close

Funktion

Schließt ein geöffnetes RAR-Archiv und gibt alle damit verbundenen Ressourcen frei.

seit PHP 2.0.0 Kategorie: io

Signatur

rar_close(RarArchive $rarfile): bool

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

Typ
bool
Beschreibung
Gibt 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.';
}
dokument.txt bild.jpg Archiv erfolgreich geschlossen.

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.';
readme.txt (1024 Bytes) 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.