确保在循环遍历 bzfile 时检查 bzerror。bzread 不会检测压缩错误,即使以 100% 的 CPU 为代价,也可能无限期地继续。
$fh = bzopen('file.bz2','r');
while(!feof($fh)) {
$buffer = bzread($fh);
if($buffer === FALSE) die('读取问题');
if(bzerror($fh) !== 0) die('压缩问题');
}
bzclose($fh);
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
bzread — 二进制安全的bzip2文件读取
bzread() 从给定的bzip2文件指针读取。
当读取了length
(未压缩)字节或到达文件结尾 (EOF) 时,读取停止,以先发生者为准。
bz
文件指针。它必须有效,并且必须指向由bzopen()成功打开的文件。
length
如果未指定,bzread() 将一次读取 1024(未压缩)字节。一次最多读取 8192 个未压缩字节。
返回未压缩的数据,或在出错时返回false
。
示例 #1 bzread() 示例
<?php
$file = "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("无法打开 $file");
$decompressed_file = '';
while (!feof($bz)) {
$decompressed_file .= bzread($bz, 4096);
}
bzclose($bz);
echo "$file 的内容是:<br />\n";
echo $decompressed_file;
?>
确保在循环遍历 bzfile 时检查 bzerror。bzread 不会检测压缩错误,即使以 100% 的 CPU 为代价,也可能无限期地继续。
$fh = bzopen('file.bz2','r');
while(!feof($fh)) {
$buffer = bzread($fh);
if($buffer === FALSE) die('读取问题');
if(bzerror($fh) !== 0) die('压缩问题');
}
bzclose($fh);