Start · Sprachen · PHP · Referenz · rar_solid_is

rar_solid_is

Funktion

Prüft, ob ein geöffnetes RAR-Archiv als <code>solid</code> gespeichert ist.

seit PHP 2.0.0 Kategorie: io

Signatur

rar_solid_is(RarArchive $rarfile): bool

Beschreibung

rar_solid_is() gibt zurück, ob das angegebene RAR-Archiv im Solid-Format vorliegt. Bei einem Solid-Archiv werden alle enthaltenen Dateien gemeinsam komprimiert, wodurch eine höhere Kompressionsrate erzielt wird, da der Kompressionsalgorithmus Redundanzen über Datei-Grenzen hinweg nutzen kann.

Der Nachteil von Solid-Archiven besteht darin, dass ein einzelner Fehler in der Archivdatei die Extraktion aller nachfolgenden Dateien unmöglich machen kann, da alle Dateien voneinander abhängen. Außerdem ist der wahlfreie Zugriff auf einzelne Dateien deutlich aufwendiger als bei normalen RAR-Archiven.

Die Funktion ist der prozedurale Gegenstück zur Methode RarArchive::isSolid(). Sie erwartet ein mit rar_open() (bzw. RarArchive::open()) geöffnetes Archiv-Handle.

Parameter

Name Typ Default Beschreibung
$rarfile Pflicht RarArchive Ein geöffnetes RAR-Archiv-Objekt vom Typ RarArchive, wie es von rar_open() zurückgegeben wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Archiv im Solid-Format vorliegt, andernfalls false.

Beispiele

Prüfen ob ein RAR-Archiv solid ist

<?php
$archiv = rar_open('/pfad/zum/archiv.rar');

if ($archiv === false) {
    echo 'Archiv konnte nicht geöffnet werden.';
    exit;
}

if (rar_solid_is($archiv)) {
    echo 'Das Archiv ist ein Solid-Archiv.';
} else {
    echo 'Das Archiv ist kein Solid-Archiv.';
}

rar_close($archiv);
Das Archiv ist ein Solid-Archiv.

Objektorientierte Variante mit RarArchive::isSolid()

<?php
$archiv = RarArchive::open('/pfad/zum/archiv.rar');

if ($archiv === false) {
    echo 'Fehler beim Öffnen des Archivs.';
    exit;
}

// Prozedurale Variante
$istSolid = rar_solid_is($archiv);

// Äquivalent: objektorientierte Methode
$istSolidOO = $archiv->isSolid();

echo 'Solid (prozedural): ' . ($istSolid ? 'Ja' : 'Nein') . PHP_EOL;
echo 'Solid (OO):         ' . ($istSolidOO ? 'Ja' : 'Nein') . PHP_EOL;

$archiv->close();
Solid (prozedural): Ja Solid (OO): Ja

// Wichtig · Fallstricke

Die Funktion setzt voraus, dass die PECL-Erweiterung rar installiert und aktiviert ist. Diese ist nicht Bestandteil der PHP-Standardinstallation und muss separat installiert werden (pecl install rar).

Bei der Verarbeitung von Solid-Archiven sollte darauf geachtet werden, dass beschädigte Solid-Archive deutlich mehr Datenverlust verursachen können als normale Archive, da alle nachfolgenden Dateien ab dem Fehler nicht mehr extrahierbar sind.