Signatur
Beschreibung
inflate_get_read_len() liefert die Gesamtanzahl der Bytes, die der angegebene Dekomprimierungs-Kontext bisher aus dem komprimierten Datenstrom gelesen hat. Diese Zahl entspricht den verarbeiteten Eingabe-Bytes (also den komprimierten Daten), nicht den dekomprimierten Ausgabe-Bytes.
Die Funktion ist nützlich, wenn man den Fortschritt einer laufenden Dekomprimierung überwachen oder prüfen möchte, wie viel komprimierter Daten bereits konsumiert wurde – beispielsweise beim stückweisen Verarbeiten (Streaming) großer Dateien oder Netzwerk-Datenströme.
Der Kontext wird zuvor mit inflate_init() erzeugt und kann für mehrere aufeinanderfolgende Aufrufe von inflate_add() wiederverwendet werden. inflate_get_read_len() lässt sich jederzeit zwischen oder nach diesen Aufrufen verwenden, um den aktuellen Stand abzufragen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $context Pflicht | InflateContext | Ein aktiver Dekomprimierungs-Kontext, der zuvor mit inflate_init() erstellt wurde. |
Rückgabewert
Beispiele
Fortschritt einer Dekomprimierung überwachen
<?php
// Komprimierte Daten erzeugen (ZLIB-Format)
$original = str_repeat('Hallo Welt! ', 1000);
$compressed = zlib_encode($original, ZLIB_ENCODING_DEFLATE);
// Dekomprimierungs-Kontext initialisieren
$context = inflate_init(ZLIB_ENCODING_DEFLATE);
$chunkSize = 64;
$offset = 0;
$decompressed = '';
while ($offset < strlen($compressed)) {
$chunk = substr($compressed, $offset, $chunkSize);
$decompressed .= inflate_add($context, $chunk, ZLIB_NO_FLUSH);
$offset += strlen($chunk);
$readLen = inflate_get_read_len($context);
echo "Verarbeitete Bytes: {$readLen} von " . strlen($compressed) . PHP_EOL;
}
// Abschließen
$decompressed .= inflate_add($context, '', ZLIB_FINISH);
echo "Fertig. Original-Länge: " . strlen($decompressed) . " Bytes" . PHP_EOL;
Gelesene Bytes nach vollständiger Dekomprimierung prüfen
<?php
$data = 'PHP ist großartig!';
$compressed = zlib_encode($data, ZLIB_ENCODING_GZIP);
$context = inflate_init(ZLIB_ENCODING_GZIP);
$result = inflate_add($context, $compressed, ZLIB_FINISH);
$readLen = inflate_get_read_len($context);
echo "Dekomprimiert: {$result}" . PHP_EOL;
echo "Komprimierte Eingabe-Bytes gelesen: {$readLen}" . PHP_EOL;
echo "Tatsächliche komprimierte Länge: " . strlen($compressed) . PHP_EOL;
// Wichtig · Fallstricke
Der Rückgabewert bezieht sich ausschließlich auf die Eingabe-Bytes (komprimierte Daten). Die Anzahl der dekomprimierten Ausgabe-Bytes kann mit inflate_get_status() nicht direkt ermittelt werden – dafür muss die Länge der gesammelten Ausgabestrings selbst gezählt werden.
Wird ein ungültiger oder bereits freigegebener Kontext übergeben, löst PHP einen TypeError aus. Stelle sicher, dass der Kontext mit inflate_init() korrekt initialisiert wurde.