CakeFest 2024: The Official CakePHP Conference

bzopen

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

bzopenbzip2 圧縮されたファイルをオープンする

説明

bzopen(string|resource $file, string $mode): resource|false

bzopen() は、 bzip2 (.bz2) ファイルを読み書き用にオープンします。

パラメータ

file

オープンするファイル名、あるいは既存のストリームリソース

mode

'r' (読み込み) と 'w' (書き込み) だけをサポートしています。 それ以外を指定すると bzopen()false を返します。

戻り値

オープンできなかった場合、bzopen()false を返します。それ以外の場合は、 新規にオープンされたファイルへのポインタが返されます。

例1 bzopen() の例

<?php

$file
= "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Couldn't open $file for reading");

bzclose($bz);

?>

参考

add a note

User Contributed Notes 2 notes

up
2
KrazyBox
15 years ago
In some circumstances, you may want to send a bzip2 stream to the client.

To do this, you need only do:

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

However, please note, because you are using STDOUT, you need to ob_flush() before actually writing to the stream. Otherwise, you might be sending data before the headers, which will cause errors on both server and client ends, in most cases.

You might be able to use php://output rather than php://stdout, however in my tests (with Linux), php://output doesn't actually work - at all.
up
-3
Jille at quis dot cx dot spam dot to dot my dot devnull
16 years ago
Warning!

the example show above is _not_ working in every case!
This example will continue reading until there is no more data:

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