Lettura e scrittura nei file

Nell'ambiente standard di PHP 5 di Google App Engine, il file system locale in cui viene eseguito il deployment dell'applicazione non è scrivibile. Questo comportamento garantisce la sicurezza e la scalabilità della tua applicazione.

Tuttavia, se l'applicazione deve scrivere e leggere file in fase di esecuzione, l'ambiente standard di PHP 5 fornisce un wrapper flusso Google Cloud Storage integrato che consente di utilizzare molte delle funzioni del file system PHP standard per leggere e scrivere file.

Esistono due modi per scrivere file su Google Cloud Storage:

  • Scrivi file dalla tua app.
    • Scrittura semplice di file
    • Scrittura file in streaming
  • Consenti all'utente di caricare file in Google Cloud Storage

Scrittura di file dall'app

Se scrivi file dalla tua app, puoi scrivere l'intero file contemporaneamente o puoi eseguire lo streaming.

Il wrapper stream di App Engine per Cloud Storage è integrato nel runtime e viene utilizzato quando fornisci un nome file che inizia con gs://. Il wrapper richiede che il nome del bucket o dell'oggetto file abbia il formato seguente:

gs://bucket_name/desired_object_name

Scrittura semplice di file

Per scrivere dati su Google Cloud Storage dalla tua app, utilizza file_put_contents, utilizzando un URL di archiviazione Cloud valido. Ad esempio:

file_put_contents("gs://${my_bucket}/hello.txt", $newFileContent);

dove my_bucket è un bucket di Google Cloud Storage configurato correttamente.

In alternativa, se vuoi utilizzare le opzioni stream per fornire opzioni di autorizzazione, memorizzazione nella cache e/o metadati, puoi scrivere il file nel seguente modo:

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

Scrittura file in streaming

In alternativa, potresti utilizzare fopen/fwrite per scrivere dati in modalità flusso:

$fp = fopen("gs://${my_bucket}/hello_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

Tieni presente che quando utilizzi il flusso di dati, i dati vengono scaricati in Google Cloud Storage in blocchi più piccoli. Non è necessario conoscere la lunghezza totale dei dati da scrivere in anticipo: verrà calcolato quando la risorsa del file viene chiusa:

Questi sono i metodi di base per scrivere file. Per i casi d'uso speciali e la gestione più avanzata dei file, consulta gli argomenti elencati in Passaggi successivi.

Eliminazione di file

Se vuoi eliminare il file stesso, utilizza la funzione PHP unlink().

Caricamenti utente

Per i dettagli su questa opzione di scrittura di file, consulta Consentire agli utenti di caricare file

Lettura dei file

Per informazioni sulla lettura dei file da Google Cloud Storage, vedi Fornire accesso pubblico ai file

Configurazione e requisiti

Devi attivare Google Cloud Storage e creare un bucket. Per ulteriori dettagli, consulta la pagina relativa alla configurazione.

Funzioni del file system PHP 5 supportate

Sono supportate molte delle funzioni di file PHP 5 più utilizzate, insieme alle informazioni sui file e alle funzioni della directory. Per un elenco completo delle funzioni di PHP supportate, consulta il supporto delle funzioni del file system di PHP 5.

Funzionalità estese fornite dall'API Cloud Storage Tools

Il wrapper stream di Google Cloud Storage consente di utilizzare le chiamate al file system di PHP. Sono tuttavia disponibili funzionalità estese di cui potresti aver bisogno per un utilizzo ottimale di Google Cloud Storage. Le seguenti funzionalità estese sono fornite nell'API Cloud Storage Tools:

Questa API fornisce un insieme di funzioni che supportano la pubblicazione di file e immagini, insieme ad altre utilità utili. Tratteremo diversi di questi nelle altre pagine di argomenti.

Esiste un altro modo per leggere e scrivere file?

Un'app PHP 5 di App Engine deve utilizzare il wrapper stream di Cloud Storage per scrivere file in fase di esecuzione. Tuttavia, se un'applicazione deve leggere i file e questi sono statici, puoi facoltativamente leggere i file statici caricati con la tua applicazione utilizzando funzioni del file system PHP come file_get_contents.

Ad esempio:

$fileContents = file_get_contents($filePath);

in cui il percorso specificato deve essere un percorso relativo allo script che vi accede.

Quando esegui il deployment dell'app in App Engine, devi caricare il file o i file in una sottodirectory dell'applicazione e configurare il file app.yaml in modo che l'app possa accedere a tali file. Per informazioni dettagliate, consulta PHP 5 Application Configuration con app.yaml.

Nella configurazione di app.yaml, tieni presente che se utilizzi un gestore di file o di directory statico (static_files o static_dir), devi specificare application_readable su true, altrimenti la tua app non sarà in grado di leggere i file. Tuttavia, se i file vengono pubblicati da un gestore di script, questa operazione non è necessaria, perché questi file sono leggibili per impostazione predefinita dai gestori degli script.

Passaggi successivi

Leggi i seguenti argomenti per conoscere i dettagli sull'utilizzo dell'API Cloud Storage Tools: