Make sure you check for bzerror while looping through a bzfile. bzread will not detect a compression error and can continue forever even at the cost of 100% cpu.
$fh = bzopen('file.bz2','r');
while(!feof($fh)) {
$buffer = bzread($fh);
if($buffer === FALSE) die('Read problem');
if(bzerror($fh) !== 0) die('Compression Problem');
}
bzclose($fh);
bzread
(PHP 4 >= 4.0.4, PHP 5)
bzread — Binarnie bezpieczny odczyt pliku bzip2
Opis
string bzread
( resource
$bz
[, int $długość = 1024
] )bzread() odczytuje z podanego wskaźnika pliku.
Odczytywanie jest zatrzymywane, gdy przeczytano długość (nieskompresowanych) bajtów
lub osiągnięto EOF, cokolwiek wystąpi pierwsze.
Parametry
-
bz -
Uchwyt do pliku musi być poprawny oraz musi wskazywać na plik otwarty za pomocą funkcji bzopen().
-
długość -
Jeśli nie została określona bzread() zostaną odczytane 1024 (nieskompresowane) bajty. Maksymalnie może zostać odczytanych 8192 bajtów.
Zwracane wartości
Zwraca nieskompresowane dane lub FALSE w przypadku błędu.
Przykłady
Przykład #1 bzread() przykład
<?php
$file = "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Nie mogę otworzyć $file");
$decompressed_file = '';
while (!feof($bz)) {
$decompressed_file .= bzread($bz, 4096);
}
bzclose($bz);
echo "Zawartość pliku $file to: <br />\n";
echo $decompressed_file;
?>
user@anonymous
15-Apr-2012 07:10
