권한, 캐싱, 메타데이터 옵션
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에서 다시 캐시되도록 파일 객체가 구성되었습니다.