Pengelolaan File PHP 5 Lanjutan

Opsi izin, cache, dan metadata

Wrapper streaming App Engine untuk Cloud Storage menyediakan opsi berikut untuk mengonfigurasi aliran data Anda:

Opsi Nilai yang Mungkin Muncul Deskripsi
acl Salah satu dari nilai berikut:
  • private
  • public-read
  • public-read-write
  • authenticated-read
  • bucket-owner-read
  • bucket-owner-full-control
  • project-private
Untuk deskripsi tentang fungsi setelan ini di Cloud Storage, lihat ACL yang Telah Ditentukan Sebelumnya. Jika acl tidak ditetapkan, Cloud Storage akan menetapkan parameter ini sebagai null dan akan menggunakan ACL objek default yang terkait dengan bucket yang berisi file.
Content-Type Semua jenis MIME yang valid Jika Anda tidak menentukan jenis konten saat mengupload objek, sistem Google Cloud Storage secara default akan disetel ke binary/octet-stream saat objek tersebut disajikan.
Content-Disposition Nilai disposisi konten yang valid Header yang dapat Anda tetapkan pada objek yang menentukan informasi presentasi tentang cara data objek akan ditransmisikan.
Content-Encoding Algoritma kompresi yang valid Algoritme kompresi untuk objek, seperti gzip. Perhatikan bahwa Google Cloud Storage tidak secara otomatis melakukan kompresi atau dekompresi pada objek berdasarkan header ini.
Content-Language Semua kode bahasa ISO 639-1 yang valid Kode bahasa ISO 639-1 yang digunakan konten (lihat Kode untuk Mewakili Nama Bahasa untuk mengetahui daftar lengkapnya).
enable_cache true (benar) atau false (salah) (true secara default) File yang dibaca dari Cloud Storage akan di-cache-kan ke dalam memori (lihat memcache) untuk peningkatan performa. Menyimpan ke cache dapat dinonaktifkan menggunakan perintah enable_cache dalam konteks streaming.
enable_optimistic_cache true (benar) atau false (salah) (false secara default) Anda dapat mengaktifkan cache optimistis untuk membaca objek file dari cache tanpa memeriksa apakah objek yang mendasarinya telah diubah di Cloud Storage sejak terakhir kali di-cache. Cache optimis sangat ideal untuk skenario tulis-sekali, baca-banyak.
metadata Array asosiasi, misalnya ['foo' => 'far', 'bar' => 'boo'] Lihat Membaca dan menulis metadata kustom.
read_cache_expiry_seconds Jumlah detik saat objek akan tetap valid dalam cache Anda dapat mengubah durasi waktu agar objek yang di-cache tetap valid menggunakan read_cache_expiry_seconds directive. Fungsi ini menentukan waktu setelah objek akan disimpan ulang dalam cache pada upaya baca berikutnya. Secara default, ini disetel ke 1 jam (3600).
writable_cache_expiry_seconds Jumlah detik saat status bucket yang dapat ditulis di-cache-kan Wrapper streaming Cloud Storage meng-cache status bucket yang dapat ditulis untuk peningkatan performa. Ini berarti bahwa bit yang dapat ditulis yang dikembalikan oleh berbagai fungsi terkait stat () dapat tidak sinkron untuk sementara saat ACL bucket berubah. Secara default, waktunya ditetapkan ke 10 menit (600).

Cuplikan berikut menunjukkan cara menggunakan opsi streaming:

$options = ['gs' => ['Content-Type' => 'text/plain']];
$context = stream_context_create($options);
file_put_contents("gs://${my_bucket}/hello_options.txt", $newFileContent, 0, $context);

Dalam cuplikan kode di atas, $options adalah sekumpulan argumen yang akan digunakan aliran data saat menulis objek baru, yang dapat ditetapkan sebagai opsi default menggunakan stream_context_set_default.

Dukungan fungsi sistem file PHP 5 di Cloud Storage

Wrapper streaming App Engine untuk Cloud Storage mendukung banyak fungsi filesystem PHP native. Beberapa fungsi tidak didukung, dan beberapa memiliki dukungan yang dimodifikasi. Tabel berikut mencantumkan setiap fungsi native tersebut, yang menunjukkan apakah fungsi tersebut didukung atau tidak. Jika suatu fungsi didukung tetapi dengan modifikasi atau batasan, fungsi tersebut akan dijelaskan.

Fungsi Filesystem Didukung? Detail
basename — Mengembalikan komponen nama akhir jalur. Didukung.
chgrp — Mengubah grup file. Tidak didukung. Selalu mengembalikan false.
chmod — Mengubah mode file. Tidak didukung. Selalu mengembalikan false.
chown — Mengubah pemilik file. Tidak didukung. Selalu mengembalikan false.
clearstatcache — Menghapus cache status file. Didukung.
copy — Menyalin file. Didukung.
dirname — Menampilkan jalur direktori induk. Didukung. Didukung, tetapi mencakup awalan gs://.
disk_free_space — Menampilkan ruang yang tersedia pada sistem file atau partisi disk. Tidak didukung. Opsi ini Dinonaktifkan.
disk_total_space — Menampilkan ukuran total sistem file atau partisi disk. Tidak didukung. Opsi ini Dinonaktifkan.
diskfreespace — Alias dari disk_free_space.
fclose — Menutup pointer file yang terbuka. Didukung.
feof — Pengujian akhir file pada pointer file. Didukung.
fflush — Mengosongkan output ke file. Didukung. Tidak memiliki efek. (Selalu mengembalikan true.)
fgetc — Mendapatkan karakter dari pointer file. Didukung.
fgetcsv — Mendapatkan baris dari pointer file dan penguraian untuk kolom CSV. Didukung.
fgets — Mendapatkan baris dari pointer file. Didukung.
fgetss — Mendapatkan baris dari pointer file dan menghapus tag HTML. Didukung.
file_exists — Memeriksa apakah file atau direktori ada. Didukung.
file_get_contents — Membaca seluruh file ke dalam string. Didukung.
file_put_contents — Menulis string ke file. Didukung.
file — Membaca seluruh file ke dalam array. Didukung.
fileatime — Mendapatkan waktu akses terakhir file. Tidak didukung. Selalu mengembalikan 0.
filectime — Mendapatkan waktu perubahan inode file. Tidak didukung. Selalu mengembalikan 0.
filegroup — Mendapatkan grup file. Tidak didukung. Selalu mengembalikan 0.
fileinode — Mendapatkan inode file. Tidak didukung. Selalu mengembalikan 0.
filemtime — Mendapatkan waktu modifikasi file. Didukung.
fileowner — Mendapatkan pemilik file. Tidak didukung. Selalu mengembalikan 0.
fileperms — Mendapatkan izin file. Didukung. Bit eksekusi selalu nonaktif.
filesize — Mendapatkan ukuran file. Didukung.
filetype — Mendapatkan jenis file. Didukung.
flock — Penguncian file saran portabel. Tidak didukung. Selalu mengembalikan false.
fopen — Membuka file atau URL. Didukung. Hanya mendukung mode berikut: r, rb, rt, w, wb, wt.
fpassthru — Menghasilkan semua data yang tersisa pada pointer file. Didukung.
fputcsv — Memformat baris sebagai CSV dan menulis ke pointer file. Didukung.
fputs — Alias dari fwrite.
fread — Pembacaan file yang aman untuk biner. Didukung.
fscanf — Mengurai input dari file sesuai dengan format. Didukung.
fseek — Mencari pointer file. Didukung. Hanya mendukung file yang dibuka menggunakan mode baca.
fstat — Mendapatkan informasi tentang file menggunakan pointer file yang terbuka. Didukung.
ftell — Menampilkan posisi saat ini dari pointer baca/tulis file. Didukung.
ftruncate — Memotong file ke panjang tertentu. Tidak didukung. Selalu mengembalikan false.
fwrite — Penulisan file yang aman untuk biner. Didukung.
glob — Temukan nama jalur yang cocok dengan suatu pola. Didukung.
is_dir — Menunjukkan apakah nama file adalah sebuah direktori. Didukung.
is_executable — Memberi tahu apakah nama file dapat dieksekusi. Tidak didukung. Selalu mengembalikan false.
is_file — Menunjukkan apakah nama file adalah file biasa. Didukung.
is_link — Menunjukkan apakah nama file adalah link simbolis. Tidak didukung. Selalu mengembalikan false.
is_readable — Menunjukkan apakah sebuah file ada dan dapat dibaca. Didukung.
is_uploaded_file — Memberi tahu apakah file diupload melalui HTTP POST. Didukung.
is_writable — Menunjukkan apakah nama file dapat ditulis atau tidak. Didukung. Nilai disimpan dalam cache dan mungkin tidak segera mencerminkan perubahan izin.
is_writeable — Alias dari is_writable.
lchgrp — Mengubah kepemilikan grup symlink. Tidak didukung. Opsi ini Dinonaktifkan.
lchown — Mengubah kepemilikan pengguna symlink. Tidak didukung. Opsi ini Dinonaktifkan.
link — Membuat hard link. Tidak didukung. Opsi ini Dinonaktifkan.
linkinfo — Mendapatkan informasi tentang link. Tidak didukung. Selalu mengembalikan -1.
lstat — Memberikan informasi tentang file atau link simbolis. Didukung.
mkdir — Membuat direktori. Didukung.
move_uploaded_file — Memindahkan file yang diupload ke lokasi baru. Didukung.
parse_ini_file — Mengurai file konfigurasi. Didukung.
pathinfo — Mengembalikan informasi tentang jalur file. Didukung.
pclose — Menutup pointer file proses. Tidak didukung. Opsi ini Dinonaktifkan.
popen — Membuka pointer file proses. Tidak didukung. Opsi ini Dinonaktifkan.
readfile — Menghasilkan file. Didukung.
readlink — Mengembalikan target link simbolis. Tidak didukung. Selalu mengembalikan false.
realpath — Mengembalikan nama jalur absolut yang dikanonikalisasi. Tidak didukung. Selalu mengembalikan false.
rename — Mengganti nama file atau direktori. Didukung.
rewind — Memundurkan posisi pointer file. Didukung. Hanya didukung untuk mode baca.
rmdir — Menghapus direktori. Didukung.
set_file_buffer — Alias dari stream_set_write_buffer.
stat — Memberikan informasi tentang file. Didukung.
symlink — Membuat link simbolis. Tidak didukung. Opsi ini Dinonaktifkan.
tempnam — Membuat file dengan nama file yang unik. Didukung. Lihat catatan ini.
tmpfile — Membuat file sementara. Didukung. Menampilkan file yang didukung memori, yang mirip dengan php://memory.
touch — Menetapkan akses dan waktu modifikasi file. Tidak didukung. Selalu mengembalikan false.
umask — Mengubah umask saat ini. Didukung. Tidak berlaku untuk file Cloud Storage.
unlink — Menghapus file. Didukung.

Perhatikan bahwa statistik file yang berfungsi dalam tabel di atas (file_exists, filemtime, filesize, fstat, is_file, is_dir, is_writable, dan stat) di-cache berdasarkan permintaan. Anda dapat menghapus cache ini dengan memanggil clearstatcache.

Selain itu, fungsi membaca direktori PHP berikut ini didukung:

Nama Fungsi
opendir
readdir
rewinddir
closedir

Menggunakan include dan require PHP 5

Untuk membantu menjaga keamanan aplikasi, kemampuan untuk include atau require dari file Cloud Storage dinonaktifkan secara default, tetapi Anda dapat mengaktifkannya seperti berikut:

Untuk include atau kode PHP require dari Google Cloud Storage di aplikasi, Anda harus menentukan bucket mana yang berisi bucket tersebut menggunakan perintah google_app_engine.allow_include_gs_buckets di file php.ini Anda.

Membaca dan menulis metadata kustom

Untuk melampirkan metadata kustom ke file yang sedang ditulis ke Google Cloud Storage, tambahkan metadata tersebut ke $options sebelum membuat konteks streaming yang digunakan untuk panggilan file_put_contents.

Dalam contoh ini, metadata bernama foo diberi nilai far, dan metadata lain bernama bar diberi nilai boo. Contoh ini juga menetapkan jenis konten ke text/plain. Konteks streaming dibuat menggunakan informasi ini di $options seperti yang ditunjukkan, dan file ditulis ke Cloud Storage menggunakan file_put_contents(), bersama dengan metadata dan jenis konten:

$metadata = ['foo' => 'bar', 'baz' => 'qux'];
$options = [
    'Content-Type' => 'text/plain',
    'metadata' => $metadata
];
$context = stream_context_create(['gs' => $options]);
file_put_contents("gs://${my_bucket}/hello_metadata.txt", $newFileContent, 0, $context);

Untuk membaca metadata kustom dan jenis konten untuk file, panggil fopen pada file, lalu gunakan CloudStorageTools::getContentType() untuk mendapatkan jenis konten dan CloudStorageTools::getMetaData() untuk mendapatkan metadata.

Metadata kustom dan jenis konten tersedia setelah Anda memiliki pointer file yang ditampilkan dari panggilan fopen.

$fp = fopen("gs://${my_bucket}/hello_metadata.txt", 'r');
$content_type = CloudStorageTools::getContentType($fp);
$metadata = CloudStorageTools::getMetaData($fp);

Pembacaan file yang di-cache

Secara default, wrapper streaming App Engine untuk file cache Cloud Storage dibaca menjadi memcache guna meningkatkan performa pada pembacaan berikutnya. Penyimpanan ke cache dapat dinonaktifkan menggunakan perintah enable_cache dalam konteks aliran data.

Untuk peningkatan performa lebih lanjut, Anda juga dapat mengaktifkan penyimpanan dalam cache optimis, yang akan membaca objek file dari cache tanpa melihat apakah objek yang mendasarinya telah diubah di Google Cloud Storage sejak terakhir kali disimpan dalam cache, menggunakan perintah enable_optimistic_cache (ditetapkan kefalse secara default). Cache optimis sangat ideal untuk skenario tulis-sekali, baca-banyak.

Anda juga dapat mengubah durasi waktu objek yang di-cache tetap valid dengan menggunakan perintah read_cache_expiry_seconds, setelah itu objek akan disimpan dalam cache ulang pada upaya baca berikutnya. Secara default, waktunya ditetapkan ke 1 jam (3600).

Dalam contoh ini, caching optimis diaktifkan, dan objek file dikonfigurasi agar ditandai untuk disimpan ke dalam cache ulang dari Google Cloud Storage setelah 5 menit.

$options = [
    'gs' => [
        'enable_cache' => true,
        'enable_optimistic_cache' => true,
        'read_cache_expiry_seconds' => 300,
    ]
];
$context = stream_context_create($options);
file_put_contents("gs://${my_bucket}/hello_caching.txt", $newFileContent, 0, $context);