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 — Lecture binaire d'un fichier bzip2
Description
string bzread
( resource
$bz
[, int $length = 1024
] )bzread() lit depuis le pointeur de fichier bzip2 donné.
La lecture s'arrête lorsque length (non-compressé)
octets ont été lus ou si la fin du fichier est atteint, le premier des deux qui
survient.
Liste de paramètres
-
bz -
Le pointeur de fichier. Il doit être valide et doit pointer vers un fichier ouvert avec succès par la fonction bzopen().
-
length -
Si non spécifié, bzread() lira 1024 (non-compressé) octets à la fois. Un maximum de 8192 octets non-compressés sera lu à la fois.
Valeurs de retour
Retourne les données non-compressées ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec bzread()
<?php
$file = "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Impossible d'ouvrir le fichier $file");
$decompressed_file = '';
while (!feof($bz)) {
$decompressed_file .= bzread($bz, 4096);
}
bzclose($bz);
echo "Le contenu du fichier $file est : <br />\n";
echo $decompressed_file;
?>
user@anonymous ¶
1 year ago
