Lettura e scrittura nei file

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

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

Esistono due modi per scrivere file in Google Cloud Storage:

  • Scrivere file dalla tua app
    • Scrittura di file semplici
    • Scrittura di file in streaming
  • Consentire all'utente di caricare file su Google Cloud Storage

Scrittura di file dall'app

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

Il wrapper dello 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 dell'oggetto del bucket o del file sia nel seguente formato:

gs://bucket_name/desired_object_name

Scrittura di file semplici

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

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

dove my_bucket è un bucket Google Cloud Storage configurato correttamente.

In alternativa, se vuoi utilizzare le opzioni di stream per fornire autorizzazioni, memorizzazione nella cache e/o opzioni di metadati, puoi scrivere il file come segue:

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

Scrittura di file in streaming

In alternativa, puoi utilizzare fopen/fwrite per scrivere i dati in streaming:

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

Tieni presente che quando utilizzi lo streaming, i dati verranno scaricati in Google Cloud Storage in blocchi più piccoli. Non è necessario conoscere in anticipo la lunghezza totale dei dati da scrivere: verrà calcolata al termine della chiusura della risorsa file:

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

Eliminazione di file

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

Caricamenti utente

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

Lettura dei file

Per informazioni sulla lettura dei file da Google Cloud Storage, consulta Fornire l'accesso pubblico ai file

Configurazione e requisiti

Devi attivare Google Cloud Storage e creare un bucket. Per ulteriori dettagli, consulta Configurazione.

Funzioni del file system PHP 5 supportate

Sono supportate molte delle funzioni di file PHP 5 di uso comune, insieme alle funzioni di informazioni sui file e sulle directory. Per un elenco completo delle funzioni PHP supportate, consulta Supporto delle funzioni del file system di PHP 5.

Funzionalità estese fornite dall'API Cloud Storage Tools

Il wrapper dello stream di Google Cloud Storage ti consente di utilizzare le chiamate al file system PHP. Tuttavia, sono disponibili funzionalità avanzate di cui potresti aver bisogno per un utilizzo ottimale di Google Cloud Storage. Queste funzionalità avanzate sono fornite nell'API Cloud Storage Tools:

Questa API fornisce un insieme di funzioni che supportano la pubblicazione di file e immagini, oltre ad altre utilità utili. Ne illustreremo alcuni nelle altre pagine degli argomenti.

Esiste un altro modo per leggere e scrivere file?

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

Ad esempio:

$fileContents = file_get_contents($filePath);

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

Devi caricare il file o i file in una sottodirectory dell'applicazione quando esegui il deployment della tua app su App Engine e devi configurare il file app.yaml in modo che la tua app possa accedervi. Per informazioni dettagliate, consulta Configurazione dell'applicazione PHP 5 con app.yaml.

Nella configurazione app.yaml, tieni presente che se utilizzi un gestore di file o directory statico (static_files o static_dir) devi specificare application_readable impostato su true, altrimenti la tua app non potrà leggere i file. Tuttavia, se i file vengono pubblicati da un gestore script, non è necessario, poiché questi file sono leggibili dagli handler di script per impostazione predefinita.

Passaggi successivi

Leggi i seguenti argomenti per informazioni dettagliate sull'utilizzo dell'API Cloud Storage Tools: