Opciones de permisos, almacenamiento en caché y metadatos
El wrapper de transmisión de App Engine para Cloud Storage ofrece las siguientes opciones a fin de configurar tu transmisión:
Opción | Valores posibles | Descripción |
---|---|---|
acl |
Uno de los siguientes valores:
|
Para obtener descripciones de las acciones que realizan los parámetros de esta configuración en Cloud Storage, consulta las LCA predefinidas. Si no configuras acl , Cloud Storage establece este parámetro como nulo y usa la LCA de objeto predeterminada asociada con el bucket que contiene el archivo. |
Content-Type |
Cualquier tipo MIME válido | Si no especificas un tipo de contenido cuando subes un objeto, el sistema de Google Cloud Storage configura de forma predeterminada binary/octet-stream cuando entrega el objeto. |
Content-Disposition |
Cualquier valor de disposición de contenido válido | Un encabezado que puedes configurar en un objeto que especifica información de presentación sobre cómo se deben transmitir los datos del objeto. |
Content-Encoding |
Cualquier algoritmo de compresión válido | El algoritmo de compresión para el objeto, como gzip. Ten en cuenta que Google Cloud Storage no comprime ni descomprime de manera automática los objetos basados en este encabezado. |
Content-Language |
Cualquier código de lenguaje ISO 639-1 válido | El código de lenguaje ISO 639-1 del contenido (consulta Códigos para la representación de nombres de lenguajes a fin de obtener una lista completa). |
enable_cache |
verdadero o falso (verdadero por configuración predeterminada) | Los archivos que se leen desde Cloud Storage se almacenan en la memoria caché (consulta memcache) para una mejora en el rendimiento. El almacenamiento en caché se puede desactivar mediante la directiva enable_cache en el contexto de transmisión. |
enable_optimistic_cache |
verdadero o falso (falso por configuración predeterminada) | Puedes habilitar almacenamiento en caché optimista para leer el objeto del archivo desde la caché sin verificar si el objeto subyacente cambió en Cloud Storage desde la última vez que se almacenó en caché. El almacenamiento en caché optimista es ideal para situaciones de escritura única y lecturas múltiples. |
metadata |
Un arreglo asociado, p. ej. | ['foo' => 'far', 'bar' => 'boo'] Consulta Lectura y escritura de metadatos personalizados. |
read_cache_expiry_seconds |
La cantidad de segundos de validez de un objeto en caché | Puedes cambiar la cantidad de tiempo que un objeto almacenado en caché permanece válido mediante el uso de read_cache_expiry_seconds directive . Esto especifica el tiempo después del cual el objeto volverá a almacenarse en caché en el próximo intento de lectura. Se configura de manera predeterminada en 1 hora (3600). |
writable_cache_expiry_seconds |
La cantidad de segundos que se almacena en caché el estado que admite escritura de un depósito | El wrapper de transmisión de Cloud Storage almacena en caché los estados que admiten escritura de los depósitos para mejorar el rendimiento. Esto significa que los bits que admiten escritura devueltos por varias funciones relacionadas con estadísticas() pueden no estar sincronizados de forma temporal cuando cambia la LCA del depósito. Se configura de manera predeterminada en 10 minutos (600). |
En el siguiente fragmento, se muestra cómo usar las opciones de transmisión:
En el fragmento anterior, $options
es un conjunto de argumentos que la transmisión usará cuando escriba objetos nuevos, que se pueden configurar como opciones predeterminadas mediante stream_context_set_default
.
Compatibilidad de funciones de sistema de archivos de PHP 5 en Cloud Storage
El wrapper de transmisión de App Engine para Cloud Storage admite muchas funciones nativas del sistema de archivos PHP. Algunas funciones no se admiten, y algunas tienen una compatibilidad modificada. La tabla siguiente enumera cada una de esas funciones nativas y muestra si la función es compatible o no. Si una función es compatible, pero con modificaciones o limitaciones, eso se describe.
Función del sistema de archivos | ¿Es compatible? | Detalles |
---|---|---|
basename — Muestra el componente de nombre final de la ruta. | Compatible. | |
chgrp — Cambia el grupo de archivos. | No compatible. | Siempre muestra false . |
chmod: Cambia el modo de archivos. | No compatible. | Siempre muestra false . |
chown: Cambia el propietario del archivo. | No compatible. | Siempre muestra false . |
clearstatcache: Borra la caché de estado de archivos. | Compatible. | |
copy — Copia archivos. | Compatible. | |
dirname — Muestra la ruta del directorio superior. | Compatible. | Compatible, pero incluye el prefijo gs:// . |
disk_free_space: Muestra el espacio disponible en el sistema de archivos o en la partición de disco. | No compatible. | Está inhabilitada. |
disk_total_space — Muestra el tamaño total de un sistema de archivos o de una partición de disco. | No compatible. | Está inhabilitada. |
diskfreespace — Alias de disk_free_space. | ||
fclose — Cierra un puntero de archivo abierto. | Compatible. | |
feof — Prueba el final de archivo en un puntero de archivo. | Compatible. | |
fflush — Limpia el resultado de un archivo. | Compatible. | Sin efecto. (Siempre muestra true ). |
fgetc: Obtiene el carácter del puntero del archivo. | Compatible. | |
fgetcsv — Obtiene la línea del puntero del archivo y analiza los campos CSV. | Compatible. | |
fgets — Obtiene la línea del puntero del archivo. | Compatible. | |
fgetss — Obtiene la línea del puntero del archivo y quita las etiquetas HTML. | Compatible. | |
file_exists — Comprueba si existe un archivo o un directorio. | Compatible. | |
file_get_contents — Lee un archivo completo y lo convierte en una string. | Compatible. | |
file_put_contents — Convierte una string en un archivo. | Compatible. | |
file — Lee un archivo completo y lo convierte en un arreglo. | Compatible. | |
fileatime — Obtiene la hora del último acceso al archivo. | No compatible. | Siempre muestra 0. |
filectime — Obtiene la hora de cambio de inodo del archivo. | No compatible. | Siempre muestra 0. |
filegroup — Obtiene un grupo de archivos. | No compatible. | Siempre muestra 0. |
fileinode — Obtiene el inodo de archivos. | No compatible. | Siempre muestra 0. |
filemtime — Obtiene la hora de modificación del archivo. | Compatible. | |
fileowner — Obtiene el propietario del archivo. | No compatible. | Siempre muestra 0. |
fileperms — Obtiene los permisos del archivo. | Compatible. | El bit de ejecución está siempre desactivado. |
filesize — Obtiene el tamaño del archivo. | Compatible. | |
filetype — Obtiene el tipo de archivo. | Compatible. | |
flock — Bloqueo de archivo de asesoría portátil. | No compatible. | Siempre muestra false . |
fopen — Abre un archivo o URL. | Compatible. | Solo es compatible con estos modos: r , rb , rt , w , wb y wt . |
fpassthru — Pone en el búfer todos los datos restantes desde un puntero de archivo. | Compatible. | |
fputcsv — Formatea la línea como CSV y la escribe en un puntero de archivo. | Compatible. | |
fputs — Alias de fwrite. | ||
fread — Lectura de archivo binario seguro. | Compatible. | |
fscanf — Analiza la entrada desde un archivo de acuerdo con un formato. | Compatible. | |
fseek — Busca en un puntero de archivo. | Compatible. | Solo es compatible con archivos que se abren mediante el modo lectura. |
fstat — Obtiene información sobre un archivo mediante un puntero de archivo abierto. | Compatible. | |
ftell — Muestra la posición actual del puntero de archivo de lectura y escritura. | Compatible. | |
ftruncate — Trunca un archivo en una longitud determinada. | No compatible. | Siempre muestra false . |
fwrite — Escritura de archivo binario seguro. | Compatible. | |
glob — Encuentra nombres de ruta que coinciden con un patrón. | Compatible. | |
is_dir — Indica si el nombre de archivo es un directorio. | Compatible. | |
is_executable — Indica si el nombre de archivo es ejecutable. | No compatible. | Siempre muestra false . |
is_file: Indica si el nombre de archivo es un archivo normal. | Compatible. | |
is_link — Indica si el nombre de archivo es un vínculo simbólico. | No compatible. | Siempre muestra false . |
is_readable — Indica si el archivo existe y si es legible. | Compatible. | |
is_uploaded_file — Indica si el archivo se subió a través de HTTP POST. | Compatible. | |
is_writable — Indica si el nombre de archivo admite escritura. | Compatible. | El valor se almacena en caché y es posible que no refleje los cambios en los permisos de manera inmediata. |
is_writeable — Alias de is_writable. | ||
lchgrp — Cambia la propiedad del grupo del vínculo simbólico. | No compatible. | Está inhabilitada. |
lchown — Cambia la propiedad del usuario del vínculo simbólico. | No compatible. | Está inhabilitada. |
link — Crea un vínculo duro. | No compatible. | Está inhabilitada. |
linkinfo — Obtiene información sobre un vínculo. | No compatible. | Siempre muestra -1 . |
lstat: Brinda información sobre un archivo o vínculo simbólico. | Compatible. | |
mkdir — Crea un directorio. | Compatible. | |
move_uploaded_file — Transfiere un archivo subido a una ubicación nueva. | Compatible. | |
parse_ini_file — Analiza un archivo de configuración. | Compatible. | |
pathinfo — Muestra información sobre una ruta de archivo. | Compatible. | |
pclose — Cierra el puntero de archivo de proceso. | No compatible. | Está inhabilitada. |
popen — Abre el puntero de archivo de proceso. | No compatible. | Está inhabilitada. |
readfile — Lee un archivo y lo pone en el búfer. | Compatible. | |
readlink — Muestra el objetivo de un vínculo simbólico. | No compatible. | Siempre muestra false . |
realpath: Muestra el nombre de ruta absoluta canonicalizada. | No compatible. | Siempre muestra false . |
rename: Cambia el nombre de un archivo o directorio. | Compatible. | |
rewind — Retrocede la posición de un puntero de archivo. | Compatible. | Compatible solo para modo lectura. |
rmdir — Quita el directorio. | Compatible. | |
set_file_buffer — Alias de stream_set_write_buffer. | ||
stat — Brinda información sobre un archivo. | Compatible. | |
symlink — Crea un vínculo simbólico. | No compatible. | Está inhabilitada. |
tempnam — Crea un archivo con un nombre de archivo único. | Compatible. | Consulta estas notas. |
tmpfile — Crea un archivo temporal. | Compatible. | Muestra un archivo con memoria con copia de seguridad similar a php://memory . |
touch: Configura la hora de modificación y acceso de un archivo. | No compatible. | Siempre muestra false . |
umask: Cambia la umask actual. | Compatible. | No se aplica a los archivos de Cloud Storage. |
unlink — Borra un archivo. | Compatible. |
Ten en cuenta que las funciones de estadísticas del archivo en la tabla anterior (file_exists
, filemtime
, filesize
, fstat
, is_file
, is_dir
, is_writable
, y stat
) se almacenan en caché por solicitud. Puedes borrar esta caché si llamas a clearstatcache
.
Además, las siguientes funciones de lectura de directorio PHP son compatibles:
Nombre de la función |
---|
opendir |
readdir |
rewinddir |
closedir |
Usa include
y require
de PHP 5.
Para ayudar a mantener la seguridad de la aplicación, la capacidad de include
o require
de un archivo de Cloud Storage se inhabilita de forma predeterminada, pero puedes habilitarla de la siguiente manera:
Para include
o require
código PHP de Google Cloud Storage en la aplicación, debes especificar qué depósitos contienen esos archivos mediante la directiva google_app_engine.allow_include_gs_buckets
en el archivo php.ini
.
Lee y escribe metadatos personalizados
Para conectar metadatos personalizados a un archivo que se escribe en Google Cloud Storage, agrega los metadatos a $options
antes de crear el contexto de la transmisión que se usa para la llamada a file_put_contents.
En este ejemplo, los metadatos llamados foo
reciben el valor far
, y otros llamados bar
reciben el valor boo
. En el ejemplo, también se establece el tipo de contenido en text/plain
. El contexto de transmisión se crea mediante esta información en $options
como se muestra, y el archivo se escribe en Cloud Storage con file_put_contents()
, junto con los metadatos y el tipo de contenido:
Si deseas leer los metadatos personalizados y el tipo de contenido de un archivo, llama a fopen
en el archivo y, luego, usa CloudStorageTools::getContentType()
a fin de obtener el tipo de contenido y CloudStorageTools::getMetaData()
para obtener los metadatos.
Los metadatos personalizados y el tipo de contenido están disponibles una vez que la llamada a fopen
muestra el puntero del archivo.
Lecturas de archivo en caché
De forma predeterminada, el wrapper de transmisión de App Engine para Cloud Storage almacena en caché las lecturas de archivos en memcache a fin de mejorar el rendimiento en lecturas posteriores. El almacenamiento en caché se puede desactivar mediante la directiva enable_cache
en el contexto de transmisión.
Para mejorar aún más el rendimiento, también puedes habilitar el almacenamiento en caché optimista, que leerá el objeto de archivo de la caché sin ver si el objeto subyacente se cambió en Google Cloud Storage desde la última vez que se almacenó en caché, mediante la directiva enable_optimistic_cache
(configurada como false
de forma predeterminada).
El almacenamiento en caché optimista es ideal para situaciones de escritura única y lecturas múltiples.
También puedes cambiar el período de validez de un objeto almacenado en caché mediante la directiva read_cache_expiry_seconds
; después de ese período el objeto se volverá a almacenar en caché en el próximo intento de lectura. Se configura de manera predeterminada en 1 hora (3600
).
En este ejemplo, el almacenamiento en caché optimista está activado y los objetos de archivo están configurados para volver a almacenarse en caché desde Google Cloud Storage después de 5 minutos.