권한, 캐싱, 메타데이터 옵션
Cloud Storage용 App Engine 스트림 래퍼는 스트림 구성을 위해 다음 옵션을 제공합니다.
옵션 | 가능한 값 | 설명 |
---|---|---|
acl |
다음 값 중 하나:
|
이러한 설정이 Cloud Storage에서 수행하는 작업에 대한 설명은 미리 정의된 ACL을 참조하세요. acl 을 설정하지 않으면 Cloud Storage가 이 매개변수를 null로 설정하고 이 파일이 있는 버킷과 연결된 기본 객체 ACL을 사용합니다. |
Content-Type |
모든 유효한 MIME 유형 | 객체를 업로드할 때 콘텐츠 유형을 지정하지 않으면 Google Cloud Storage 시스템은 객체 제공 시 기본값binary/octet-stream 으로 설정합니다. |
Content-Disposition |
모든 유효한 콘텐츠 처리 값 | 객체 데이터가 전송되는 방식에 관한 표시 정보를 지정하는 객체에 설정할 수 있는 헤더입니다. |
Content-Encoding |
모든 유효한 압축 알고리즘 | gzip과 같은 객체의 압축 알고리즘입니다. Google Cloud Storage는 이 헤더를 토대로 객체를 자동으로 압축하거나 압축 해제하지 않습니다. |
Content-Language |
모든 유효한 ISO 639-1 언어 코드 | 콘텐츠의 ISO 639-1 언어 코드입니다(전체 목록은 언어 이름의 표시 코드 참조). |
enable_cache |
true 또는 false(기본적으로 true) | Cloud Storage에서 읽는 파일은 성능 개선을 위해 메모리(memcache 참조)에 캐시됩니다. 캐싱은 스트림 컨텍스트에서 enable_cache 지시문을 사용하여 해제할 수 있습니다. |
enable_optimistic_cache |
true 또는 false(기본적으로 false) | 마지막으로 캐시된 이후 Cloud Storage에서 기본 객체가 변경되었는지 여부를 확인하지 않고 캐시에서 파일 객체를 읽도록 낙관적 캐싱을 사용할 수 있습니다. 낙관적 캐싱은 한 번 쓰고 여러 번 읽는 상황에 이상적입니다. |
metadata |
연관 배열(예: | ['foo' => 'far', 'bar' => 'boo'] 커스텀 메타데이터 읽기 및 쓰기를 참조하세요. |
read_cache_expiry_seconds |
캐시에서 객체가 유효한 상태로 유지되는 시간(초) | read_cache_expiry_seconds directive 를 사용하여 캐시된 객체의 유효 기간을 변경할 수 있습니다. 다음 읽기 시도 시 객체가 다시 캐시되기까지의 시간을 지정합니다. 기본적으로 1시간(3600초)으로 설정됩니다. |
writable_cache_expiry_seconds |
버킷의 쓰기 가능 상태가 캐시되는 시간(초) | Cloud Storage 스트림 래퍼는 성능 개선을 위해 버킷의 쓰기 가능 상태를 캐시합니다. 따라서 여러 stat() 관련 함수에서 반환된 쓰기 가능 비트는 버킷의 ACL이 변경되면 일시적으로 동기화되지 않을 수 있습니다. 기본적으로 10분(600초)으로 설정됩니다. |
다음 스니펫은 스트림 옵션 사용 방법을 보여줍니다.
위 스니펫에서 $options
는 새 객체를 쓸 때 스트림이 사용하는 인수 집합이며 stream_context_set_default
를 통해 기본 옵션으로 설정될 수 있습니다.
Cloud Storage에서 PHP 5 파일 시스템 함수 지원
Cloud Storage용 App Engine 스트림 래퍼는 여러 기본 PHP 파일 시스템 함수를 제공합니다. 일부 함수는 지원되지 않으며, 일부는 수정된 형태로 지원됩니다. 다음 표에 이러한 각 기본 함수와 함께 함수 지원 여부가 나열되어 있습니다. 함수가 지원되지만 수정 또는 제한된 형태로 지원되는 경우에는 해당 내용이 설명되어 있습니다.
파일 시스템 함수 | 지원 여부 | 세부정보 |
---|---|---|
basename — 경로의 후행 이름 구성요소를 반환합니다. | 지원됨 | |
chgrp — 파일 그룹을 변경합니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
chmod — 파일 모드를 변경합니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
chown — 파일 소유자를 변경합니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
clearstatcache — 파일 상태 캐시를 지웁니다. | 지원됨 | |
copy — 파일을 복사합니다. | 지원됨 | |
dirname — 상위 디렉터리 경로를 반환합니다. | 지원됨 | 지원되지만 gs:// 프리픽스가 포함됩니다. |
disk_free_space — 파일 시스템 또는 디스크 파티션에서 사용할 수 있는 공간을 반환합니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
disk_total_space — 파일 시스템 또는 디스크 파티션의 총 크기를 반환합니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
diskfreespace — disk_free_space의 별칭입니다. | ||
fclose — 열린 파일 포인터를 닫습니다. | 지원됨 | |
feof — 파일 포인터에서 파일 끝을 테스트합니다. | 지원됨 | |
fflush — 출력을 파일로 플러시합니다. | 지원됨 | 효과가 없습니다. (항상 true 를 반환합니다.) |
fgetc — 파일 포인터에서 문자를 가져옵니다. | 지원됨 | |
fgetcsv — 파일 포인터에서 라인을 가져오고 CSV 필드를 파싱합니다. | 지원됨 | |
fgets — 파일 포인터에서 라인을 가져옵니다. | 지원됨 | |
fgetss — 파일 포인터에서 라인을 가져오고 HTML 태그를 제거합니다. | 지원됨 | |
file_exists — 파일 또는 디렉터리가 있는지 확인합니다. | 지원됨 | |
file_get_contents — 전체 파일을 문자열 한 개로 읽습니다. | 지원됨 | |
file_put_contents — 파일에 문자열을 씁니다. | 지원됨 | |
file — 전체 파일을 배열 한 개로 읽습니다. | 지원됨 | |
fileatime — 파일의 마지막 액세스 시간을 가져옵니다. | 지원되지 않음 | 항상 0을 반환합니다. |
filectime — 파일의 inode 변경 시간을 가져옵니다. | 지원되지 않음 | 항상 0을 반환합니다. |
filegroup — 파일 그룹을 가져옵니다. | 지원되지 않음 | 항상 0을 반환합니다. |
fileinode — 파일 inode를 가져옵니다. | 지원되지 않음 | 항상 0을 반환합니다. |
filemtime — 파일 수정 시간을 가져옵니다. | 지원됨 | |
fileowner — 파일 소유자를 가져옵니다. | 지원되지 않음 | 항상 0을 반환합니다. |
fileperms — 파일 권한을 가져옵니다. | 지원됨 | 실행 비트는 항상 꺼져 있습니다. |
filesize — 파일 크기를 가져옵니다. | 지원됨 | |
filetype — 파일 형식을 가져옵니다. | 지원됨 | |
flock — 이식 가능한 자문 파일을 잠급니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
fopen — 파일 또는 URL을 엽니다. | 지원됨 | r , rb , rt , w , wb , wt 모드만 지원합니다. |
fpassthru — 파일 포인터에 남아 있는 모든 파일을 출력합니다. | 지원됨 | |
fputcsv — 라인을 CSV 형식으로 지정하고 파일 포인터에 씁니다. | 지원됨 | |
fputs — fwrite의 별칭입니다. | ||
fread — 바이너리 안전 파일 읽기입니다. | 지원됨 | |
fscanf — 형식에 따라 파일에서 입력을 파싱합니다. | 지원됨 | |
fseek — 파일 포인터에서 찾습니다. | 지원됨 | 읽기 모드를 사용하여 열린 파일만 지원합니다. |
fstat — 열린 파일 포인터를 사용하여 파일 정보를 가져옵니다. | 지원됨 | |
ftell — 파일 읽기/쓰기 포인터의 현재 위치를 반환합니다. | 지원됨 | |
ftruncate — 파일을 지정된 길이로 자릅니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
fwrite — 바이너리 안전 파일 쓰기입니다. | 지원됨 | |
glob — 패턴과 일치하는 경로 이름을 찾습니다. | 지원됨 | |
is_dir — 파일 이름이 디렉터리인지를 알려줍니다. | 지원됨 | |
is_executable — 파일 이름이 실행 파일인지를 알려줍니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
is_file — 파일 이름이 일반 파일인지를 알려줍니다. | 지원됨 | |
is_link — 파일 이름이 심볼릭 링크인지를 알려줍니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
is_readable — 파일이 존재하고 읽을 수 있는지를 알려줍니다. | 지원됨 | |
is_uploaded_file — 파일이 HTTP POST를 통해 업로드되었는지를 알려줍니다. | 지원됨 | |
is_writable — 파일 이름의 쓰기 가능 여부를 알려줍니다. | 지원됨 | 값이 캐시되며 권한 변경을 즉시 반영하지 못할 수 있습니다. |
is_writeable — is_writable의 별칭입니다. | ||
lchgrp — symlink의 그룹 소유권을 변경합니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
lchown — symlink의 사용자 소유권을 변경합니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
link — 하드 링크를 만듭니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
linkinfo — 링크 정보를 가져옵니다. | 지원되지 않음 | 항상 -1 를 반환합니다. |
lstat — 파일 또는 심볼릭 링크의 정보를 제공합니다. | 지원됨 | |
mkdir — 디렉터리를 만듭니다. | 지원됨 | |
move_uploaded_file — 업로드한 파일을 새 위치로 이동합니다. | 지원됨 | |
parse_ini_file — 구성 파일을 파싱합니다. | 지원됨 | |
pathinfo — 파일 경로 정보를 반환합니다. | 지원됨 | |
pclose — 프로세스 파일 포인터를 닫습니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
popen — 프로세스 파일 포인터를 엽니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
readfile — 파일을 출력합니다. | 지원됨 | |
readlink — 심볼릭 링크의 타겟을 반환합니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
realpath — 정규화된 절대 경로 이름을 반환합니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
rename — 파일이나 디렉터리의 이름을 바꿉니다. | 지원됨 | |
rewind — 파일 포인터의 위치를 되감습니다. | 지원됨 | 읽기 모드에서만 지원됩니다. |
rmdir — 디렉터리를 삭제합니다. | 지원됨 | |
set_file_buffer — stream_set_write_buffer의 별칭입니다. | ||
stat — 파일 정보를 제공합니다. | 지원됨 | |
symlink — 심볼릭 링크를 만듭니다. | 지원되지 않음 | 이 함수는 중지되었습니다. |
tempnam — 고유한 파일 이름을 가진 파일을 만듭니다. | 지원됨 | 이 참고를 참조하세요. |
tmpfile — 임시 파일을 만듭니다. | 지원됨 | php://memory 와 유사한 메모리 지원 파일을 반환합니다. |
touch — 파일의 액세스와 수정 시간을 설정합니다. | 지원되지 않음 | 항상 false 를 반환합니다. |
umask — 현재 umask를 변경합니다. | 지원됨 | Cloud Storage 파일에 적용하지 마세요. |
unlink — 파일을 삭제합니다. | 지원됨 |
위 표의 파일 상태 함수(file_exists
, filemtime
, filesize
, fstat
, is_file
, is_dir
, is_writable
, stat
)는 요청 단위로 캐시됩니다. clearstatcache
를 호출하여 이 캐시를 삭제할 수 있습니다.
이외에도 다음 PHP 디렉터리 읽기 함수가 지원됩니다.
함수 이름 |
---|
opendir |
readdir |
rewinddir |
closedir |
PHP 5 include
및 require
사용
애플리케이션 보안을 위해 Cloud Storage 파일에서 include
또는 require
기능이 기본적으로 중지되지만 다음과 같이 이 기능을 사용 설정할 수 있습니다.
애플리케이션에서 Google Cloud Storage의 PHP 코드를 include
또는 require
하려면 php.ini
파일에서 google_app_engine.allow_include_gs_buckets
지시문을 사용하여 이 파일이 포함되는 버킷을 지정해야 합니다.
커스텀 메타데이터 읽기 및 쓰기
Google Cloud Storage에 작성된 파일에 커스텀 메타데이터를 첨부하려면 $options
에 메타데이터를 추가한 후 file_put_contents 호출에 사용되는 스트림 컨텍스트를 만듭니다.
이 예시에서 foo
라는 메타데이터에는 far
값이 지정되고 또 다른 bar
라는 메타데이터에는 boo
값이 지정되며 콘텐츠 유형도 text/plain
로 설정됩니다. 스트림 컨텍스트는 다음과 같이 $options
의 정보를 통해 생성되고 파일은 file_put_contents()
를 통해 메타데이터 및 콘텐츠 유형과 함께 Cloud Storage에 기록됩니다.
파일의 커스텀 메타데이터와 콘텐츠 유형을 읽으려면 파일에서 fopen
을 호출한 후 CloudStorageTools::getContentType()
을 사용하여 콘텐츠 유형을 가져오고 CloudStorageTools::getMetaData()
를 사용하여 메타데이터를 가져옵니다.
fopen
호출에서 파일 포인터가 반환되면 커스텀 메타데이터와 콘텐츠 유형을 사용할 수 있습니다.
캐시된 파일 읽기
기본적으로 Cloud Storage용 App Engine 스트림 래퍼는 이후 읽기 작업의 성능 향상을 위해 파일 읽기를 memcache에 캐시합니다. 캐싱은 스트림 컨텍스트에서 enable_cache
지시문을 사용하여 해제할 수 있습니다.
성능을 더욱 개선하기 위해 낙관적 캐싱을 사용할 수도 있으며, 이 경우 enable_optimistic_cache
지시문(기본적으로 false
로 설정됨)을 사용하여 마지막으로 캐시된 이후 Google Cloud Storage에서 기본 객체가 변경되었는지 여부를 확인하지 않고 캐시에서 파일 객체를 읽습니다.
낙관적 캐싱은 한 번 쓰고 여러 번 읽는 상황에 이상적입니다.
read_cache_expiry_seconds
지시문을 사용하여 다음 읽기 시도 시 객체가 다시 캐시되기 전까지 캐시된 객체가 유효한 상태로 유지되는 시간을 변경할 수도 있습니다. 기본적으로 1시간(3600
)으로 설정됩니다.
이 예시에서는 낙관적 캐싱이 사용되었으며 5분 후에 Google Cloud Storage에서 다시 캐시되도록 파일 객체가 구성되었습니다.