バージョン1.18の新機能。
定義
パラメーター
$alias: 配列gridfs://ストリーム ラッパーを使用してファイルにアクセスするときに GridFS バケットを識別するために使用される空でないstring 。
動作
バケットのエイリアスを登録すると、 gridfs://<bucket-alias>/<filename>形式のファイル名 string を使用して、ファイルの最新のリビジョニングにアクセスできます。
サポートされているストリーム関数:
fopen() と "r"、"rb"、"w"、および "wb" モード
読み取りモードでは、ストリーム コンテキストに読み取り対象ファイルのリビルド番号を指定するオプションgridfs['revision']を含めることができます。 省略した場合は、最新のリビジョニングが読み取られます(リ-1 )。
書込みモードでは、ストリーム コンテキストにオプションgridfs['chunkSizeBytes']を含めることができます。 省略した場合、デフォルトはBucketインスタンス オプションから継承されます。
関数renameとunlinkは、ファイル名のすべての変更を名前変更または削除します。 ファイル名が存在しない場合、これらの関数はFileNotFoundExceptionをスローします。
例
ストリームラッパーを使用したGridFSバケットの読み取りと書込みgridfs://
次の例では、GridFS バケットのエイリアスを登録し、関数file_exists() 、 file_get_contents() 、 file_put_contents()を使用してバケットの読み取りと書込みを行う方法を示します。
これらの関数を呼び出すたびに、サーバーにリクエストが行われます。
$database = (new MongoDB\Client)->getDatabase('test'); $bucket = $database->selectGridFSBucket(); $bucket->registerGlobalStreamWrapperAlias('mybucket'); var_dump(file_exists('gridfs://mybucket/hello.txt')); file_put_contents('gridfs://mybucket/hello.txt', 'Hello, GridFS!'); var_dump(file_exists('gridfs://mybucket/hello.txt')); echo file_get_contents('gridfs://mybucket/hello.txt'); unlink('gridfs://mybucket/hello.txt');
出力は次のようになります。
bool(false) bool(true) Hello, GridFS!
ファイルの特定のリバージョンを読み取る
ストリーム コンテキストを使用すると、読み込むファイルのリビルド番号を指定できます。 省略した場合は、最新のリビジョニングが読み取られます。
$database = (new MongoDB\Client)->getDatabase('test'); $bucket = $database->selectGridFSBucket(); $bucket->registerGlobalStreamWrapperAlias('mybucket'); // Creating revision 0 $handle = fopen('gridfs://mybucket/hello.txt', 'w'); fwrite($handle, 'Hello, GridFS! (v0)'); fclose($handle); // Creating revision 1 $handle = fopen('gridfs://mybucket/hello.txt', 'w'); fwrite($handle, 'Hello, GridFS! (v1)'); fclose($handle); // Read revision 0 $context = stream_context_create([ 'gridfs' => ['revision' => 0], ]); $handle = fopen('gridfs://mybucket/hello.txt', 'r', false, $context); echo fread($handle, 1024);
出力は次のようになります。
Hello, GridFS! (v0)