PHP Conference Japan 2024

bzopen

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzopen開啟 bzip2 壓縮檔案

說明

bzopen(字串|資源 $file, 字串 $mode): 資源|false

bzopen() 開啟一個 bzip2 (.bz2) 檔案以進行讀取或寫入。

參數

檔案

要開啟的檔案名稱,或現有的串流資源。

模式

支援 'r'(讀取)和 'w'(寫入)模式。其他模式都會導致 bzopen() 返回 false(假)。

返回值

如果開啟失敗,bzopen() 會返回 false(假),否則會返回指向新開啟檔案的指標。

範例

範例 #1 bzopen() 範例

<?php

$file
= "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("無法開啟 $file 以進行讀取");

bzclose($bz);

?>

參見

新增註解

使用者貢獻的註解 2 則註解

KrazyBox
15 年前
在某些情況下,您可能需要將 bzip2 串流傳送至客戶端。

要做到這一點,您只需要執行

<?php
ob_flush
();
$bz = bzopen('php://stdout', 'w');
bzwrite($bz, 'some input here');
bzclose($bz);
?>

但請注意,因為您使用的是 STDOUT,所以在實際寫入串流之前,您需要先執行 ob_flush()。否則,您可能會在標頭之前傳送資料,這在大部分情況下會導致伺服器端和客戶端端都發生錯誤。

您或許可以使用 php://output 而不是 php://stdout,但在我的測試中(使用 Linux),php://output 根本無法運作。
Jille at quis dot cx dot spam dot to dot my dot devnull
16 年前
警告!

上面顯示的範例並_非_在所有情況下都能正常運作!
此範例將持續讀取,直到沒有更多資料為止

<?PHP
$bz
=bzopen('foo.bz2', 'r');
$data="";
do {
$line=bzread($bz, 8092);
if(
$line!==false)
$data.=$line;
}
while(
$line);
bzclose($bz);
?>
To Top