MongoDB\GridFS\Bucket::registerGlobalStreamWrapperAlias()
버전 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
를 발생시킵니다.
예시
Read and write to a GridFS bucket using the gridfs://
stream wrapper
다음 예시에서는 GridFS 버킷에 별칭을 등록하고 file_exists()
, file_get_contents()
및 file_put_contents()
함수를 사용하여 버킷을 읽고 쓰는 방법을 보여 줍니다.
이러한 함수를 호출할 때마다 서버에 요청이 발생합니다.
$database = (new MongoDB\Client)->selectDatabase('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)->selectDatabase('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)