Permissões, armazenamento em cache e opções de metadados
O wrapper de stream do App Engine para Cloud Storage fornece as seguintes opções para configurar seu stream:
Opção | Valores possíveis | Descrição |
---|---|---|
acl |
Um dos seguintes valores:
|
Para descrições da função dessas configurações no Cloud Storage, consulte ACLs predefinidas. Se você não definir acl , o Cloud Storage definirá esse parâmetro como nulo e usará a ACL padrão do objeto associada ao bucket que contém o arquivo. |
Content-Type |
Qualquer tipo MIME válido | Se você não especificar um tipo de conteúdo ao fazer o upload de um objeto, o sistema do Google Cloud Storage usará como padrão binary/octet-stream quando veicular o objeto. |
Content-Disposition |
Qualquer valor de disposição de conteúdo válido | Um cabeçalho que pode ser definido em um objeto que especifica as informações de apresentação sobre como os dados do objeto devem ser transmitidos. |
Content-Encoding |
Qualquer algoritmo de compactação válido | O algoritmo de compactação para o objeto, como gzip. Observe que o Google Cloud Storage não compacta nem descompacta objetos automaticamente com base nesse cabeçalho. |
Content-Language |
Qualquer código de idioma ISO 639-1 válido | O código de idioma ISO 639-1 do conteúdo. Consulte Códigos para a representação de nomes de idiomas para uma lista completa. |
enable_cache |
true ou false (true por padrão) | Os arquivos lidos no Cloud Storage são armazenados em cache na memória (consulte memcache) para melhorar o desempenho. O armazenamento em cache pode ser desativado usando a diretiva enable_cache no contexto do stream. |
enable_optimistic_cache |
true ou false (false por padrão) | É possível ativar o cache otimizador para a leitura do objeto de arquivo do cache sem a verificação de alteração do objeto subjacente no Cloud Storage desde o último armazenamento. O armazenamento em cache otimizador é ideal para cenários de gravação única e várias leituras. |
metadata |
Uma matriz associativa, por exemplo | ['foo' => 'far', 'bar' => 'boo'] Consulte Como ler e gravar metadados personalizados. |
read_cache_expiry_seconds |
O número de segundos que um objeto permanece válido no cache | É possível alterar o tempo que um objeto armazenado em cache permanece válido usando o read_cache_expiry_seconds directive . A diretiva especifica o tempo depois de que o objeto será armazenado novamente na próxima tentativa de leitura. Por padrão, o valor é definido como 1 hora (3600). |
writable_cache_expiry_seconds |
O número de segundos em que o estado gravável de um intervalo é armazenado em cache | No wrapper de stream do Cloud Storage, o estado gravável de buckets é armazenado em cache para melhoria do desempenho. Isso significa que os bits graváveis retornados por várias funções relacionadas a stat() podem estar temporariamente fora de sincronia quando a ACL do intervalo é alterada. Por padrão, o valor é definido como 10 minutos (600). |
No snippet a seguir, mostramos como usar as opções de stream:
No snippet acima, $options
é um conjunto de argumentos que o stream usará ao gravar novos objetos, que podem ser definidos como as opções padrão usando stream_context_set_default
.
Funções do sistema de arquivos PHP compatíveis com o Cloud Storage
O wrapper de stream do App Engine para Cloud Storage é compatível com muitas funções nativas do sistema de arquivos PHP. Algumas funções não são compatíveis e outras têm a compatibilidade modificada. Na tabela a seguir, estão listadas cada uma dessas funções nativas e se elas são compatíveis ou não. Se uma função for compatível, mas com modificações ou limitações, essas características serão descritas.
Função do sistema de arquivos | Compatível? | Detalhes |
---|---|---|
basename - o componente de nome à direita do caminho é retornado. | Compatível. | |
chgrp - o grupo de arquivos é alterado. | Incompatível. | O retorno é sempre false . |
chmod - o modo de arquivo é alterado. | Incompatível. | O retorno é sempre false . |
chown - o proprietário do arquivo é alterado. | Incompatível. | O retorno é sempre false . |
clearstatcache - o cache de status do arquivo é limpo. | Compatível. | |
copy - o arquivo é copiado. | Compatível. | |
dirname - o caminho do diretório-pai é retornado. | Compatível. | Compatível, mas inclui o prefixo gs:// . |
disk_free_space - o espaço disponível no sistema de arquivos ou na partição de disco é retornado. | Incompatível. | Está desativada. |
disk_total_space - o tamanho total do sistema de arquivos ou da partição de disco é retornado. | Incompatível. | Está desativada. |
diskfreespace - alias de disk_free_space. | ||
fclose - um ponteiro de arquivo aberto é fechado. | Compatível. | |
feof - o fim de arquivo em um ponteiro de arquivo é testado. | Compatível. | |
fflush - a saída de um arquivo é liberada. | Compatível. | Não tem efeito O retorno é sempre true . |
fgetc - o caractere do ponteiro de arquivo é recebido. | Compatível. | |
fgetcsv - a linha do ponteiro de arquivo é recebida, e os campos CSV são analisados. | Compatível. | |
fgets - a linha do ponteiro de arquivo é recebida. | Compatível. | |
fgetss - a linha do ponteiro de arquivo, sem tags HTML, é recebida. | Compatível. | |
file_exists - verificação da existência de um arquivo ou diretório. | Compatível. | |
file_get_contents - leitura do arquivo inteiro em uma string. | Compatível. | |
file_put_contents - gravação de uma string em um arquivo. | Compatível. | |
arquivo - leitura de todo o arquivo em uma matriz. | Compatível. | |
fileatime - informa o último horário de acesso do arquivo. | Incompatível. | O retorno é sempre 0. |
filectime - informa o tempo de alteração do inode do arquivo. | Incompatível. | O retorno é sempre 0. |
filegroup - informa o grupo de arquivos. | Incompatível. | O retorno é sempre 0. |
fileinode - informa o inode do arquivo. | Incompatível. | O retorno é sempre 0. |
filemtime - informa a hora da modificação do arquivo. | Compatível. | |
fileowner - informa o proprietário do arquivo. | Incompatível. | O retorno é sempre 0. |
fileperms - informa as permissões de arquivo. | Compatível. | O bit de execução está sempre desligado. |
filesize - informa o tamanho do arquivo. | Compatível. | |
filetype - informa o tipo de arquivo. | Compatível. | |
flock - gerenciamento de arquivos de bloqueio portátil. | Incompatível. | O retorno é sempre false . |
fopen - um arquivo ou URL é aberto. | Compatível. | Compatível apenas com estes modos: r , rb , rt , w , wb , wt . |
fpassthru - saída de todos os dados restantes em um ponteiro de arquivo. | Compatível. | |
fputcsv - a linha é formatada como CSV e gravada em um ponteiro de arquivo. | Compatível. | |
fputs - alias de fwrite. | ||
fread - leitura binary-safe de um arquivo. | Compatível. | |
fscanf - análise da entrada de um arquivo de acordo com um formato. | Compatível. | |
fseek - procura um ponteiro de arquivo. | Compatível. | Compatível apenas com arquivos abertos no modo de leitura. |
fstat - uso de um ponteiro de arquivo aberto para recuperar informações sobre um arquivo. | Compatível. | |
ftell - a posição atual do ponteiro de leitura/gravação do arquivo é retornada. | Compatível. | |
ftruncate - um arquivo é truncado para determinado comprimento. | Incompatível. | O retorno é sempre false . |
fwrite - gravação binary-safe de arquivos. | Compatível. | |
glob - localização de nomes de caminho correspondentes a um padrão. | Compatível. | |
is_dir - informa se o nome do arquivo é um diretório. | Compatível. | |
is_executable - informa se o nome do arquivo é executável. | Incompatível. | O retorno é sempre false . |
is_file - informa se o nome do arquivo é um arquivo regular. | Compatível. | |
is_link - informa se o nome do arquivo é um link simbólico. | Incompatível. | O retorno é sempre false . |
is_readable - informa se um arquivo existe e é legível. | Compatível. | |
is_uploaded_file - informa se o arquivo foi enviado via HTTP POST. | Compatível. | |
is_writable - informa se o nome de arquivo é gravável. | Compatível. | O valor é armazenado em cache e pode não refletir as alterações de permissão imediatamente. |
is_writeable - alias de is_writable. | ||
lchgrp - a propriedade do grupo do symlink é alterada. | Incompatível. | Está desativada. |
lchown - a propriedade do usuário do symlink é alterada. | Incompatível. | Está desativada. |
link - criação de um link físico. | Incompatível. | Está desativada. |
linkinfo - recuperação de informações sobre um link. | Incompatível. | O retorno é sempre -1 . |
lstat - informações sobre um arquivo ou link simbólico. | Compatível. | |
mkdir - criação de um diretório. | Compatível. | |
move_uploaded_file - um arquivo carregado é movido para um novo local. | Compatível. | |
parse_ini_file - análise de um arquivo de configuração. | Compatível. | |
pathinfo - informações sobre um caminho de arquivo. | Compatível. | |
pclose - fechamento de um processo como ponteiro de arquivo. | Incompatível. | Está desativada. |
popen - abertura de um processo como ponteiro de arquivo. | Incompatível. | Está desativada. |
readfile - envio de um arquivo. | Compatível. | |
readlink - o destino de um link simbólico é retornado. | Incompatível. | O retorno é sempre false . |
realpath - o caminho absoluto canonizado é retornado. | Incompatível. | O retorno é sempre false . |
rename - um arquivo ou diretório é renomeado. | Compatível. | |
rewind - a posição de um ponteiro de arquivo é reinicializada. | Compatível. | Compatível apenas com o modo de leitura. |
rmdir - remoção do diretório. | Compatível. | |
set_file_buffer - alias de stream_set_write_buffer. | ||
stat - informações sobre um arquivo. | Compatível. | |
symlink - criação de um link simbólico. | Incompatível. | Está desativada. |
tempnam - criação de um arquivo com um nome de arquivo único. | Compatível. | Consulte estas observações. |
tmpfile - criação de um arquivo temporário. | Compatível. | Retorna um arquivo de memória de backup similar a php://memory . |
touch - definição do tempo de acesso e modificação do arquivo. | Incompatível. | O retorno é sempre false . |
umask - alteração de umask atual. | Compatível. | Não se aplica a arquivos do Cloud Storage. |
unlink - um arquivo é excluído. | Compatível. |
Observe que as funções stat do arquivo na tabela acima (file_exists
, filemtime
, filesize
, fstat
, is_file
, is_dir
, is_writable
e stat
) são armazenadas em cache por solicitação. Você pode limpar esse cache chamando clearstatcache
.
Além disso, as seguintes funções de leitura de diretório PHP são compatíveis:
Nome da função |
---|
opendir |
readdir |
rewinddir |
closedir |
Como usar PHP 5 include
e require
Para ajudar a manter a segurança do aplicativo, a capacidade de include
ou require
de um arquivo do Cloud Storage é desativada por padrão, mas você pode ativá-la da seguinte maneira:
Para o código PHP include
ou require
do Google Cloud Storage no seu aplicativo, especifique quais buckets contêm esses arquivos usando a diretiva google_app_engine.allow_include_gs_buckets
em seu arquivo php.ini
.
Como ler e gravar metadados personalizados
Para anexar metadados personalizados a um arquivo que está sendo gravado no Google Cloud Storage, adicione-os a $options
antes de criar o contexto de stream usado para a chamada file_put_contents.
Neste exemplo, os metadados denominados foo
recebem o valor far
e outro, chamado bar
, recebe o valor boo
. O exemplo também define o tipo de conteúdo como text/plain
. O contexto do stream é criado usando essas informações em $options
, conforme mostrado, e o arquivo é gravado no Cloud Storage usando file_put_contents()
, juntamente com os metadados e o tipo de conteúdo:
Para ler os metadados personalizados e o tipo de conteúdo de um arquivo, chame fopen
no arquivo e use CloudStorageTools::getContentType()
para receber o tipo de conteúdo e CloudStorageTools::getMetaData()
para receber os metadados.
Os metadados personalizados e o tipo de conteúdo estão disponíveis depois que o ponteiro de arquivo é retornado da chamada de fopen
.
Leituras de arquivos em cache
Por padrão, o wrapper de stream do App Engine para Cloud Storage armazena em cache as leituras de arquivos no memcache para melhorar o desempenho nas leituras subsequentes. O armazenamento em cache pode ser desativado usando a diretiva enable_cache
no contexto do stream.
Para melhorar ainda mais o desempenho, também é possível ativar o cache otimista, que lerá o objeto de arquivo do cache sem ver se o objeto subjacente foi alterado no Google Cloud Storage desde a última vez em que foi armazenado, usando a diretiva enable_optimistic_cache
(definida como false
por padrão).
O armazenamento em cache otimizador é ideal para cenários de gravação única e várias leituras.
Também é possível alterar o tempo que um objeto em cache permanece válido usando a diretiva read_cache_expiry_seconds
. Depois desse tempo, o objeto será armazenado em cache novamente na próxima tentativa de leitura. Por padrão,
o valor é definido como 1 hora (3600
).
Neste exemplo, o armazenamento em cache otimizador está ativado, e os objetos de arquivo são configurados para serem marcados para novo armazenamento no Google Cloud Storage após 5 minutos.