請務必在迴圈處理 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);