Lettura e scrittura nei file

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

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

Esistono due modi per scrivere file in Google Cloud Storage:

  • Scrivere file dall'app
    • Scrittura file semplice
    • Scrittura file in streaming
  • Consenti all'utente di caricare file su Google Cloud Storage

Scrittura di file dall'app

Se scrivi file dall'app, puoi scrivere l'intero file contemporaneamente oppure eseguire lo streaming della scrittura del file.

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 sia nel formato:

gs://bucket_name/desired_object_name

Scrittura file semplice

Per scrivere dati in Google Cloud Storage dalla tua app, utilizza file_put_contents con 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 flusso per fornire autorizzazioni, memorizzazione nella cache e/o opzioni dei 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 file in streaming

In alternativa, puoi 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 i flussi di dati, i dati verranno scaricati in Google Cloud Storage in blocchi più piccoli. Non è necessario conoscere la lunghezza totale dei dati da scrivere in anticipo: verrà calcolata alla chiusura della risorsa file:

Queste sono le modalità di scrittura di file di base. Per casi d'uso speciali e una gestione più avanzata dei file, consulta gli argomenti elencati in Dove andare dopo.

Eliminazione di file in corso...

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

Caricamenti utente

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

Lettura di 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 di file system PHP 5 supportate

Sono supportate molte delle funzioni dei file PHP 5 di uso comune, oltre alle informazioni sui file e alle funzioni di directory. Per un elenco completo delle funzioni PHP supportate, consulta il supporto per le funzioni di file system PHP 5.

Funzionalità estese fornite dall'API Cloud Storage Tools

Il wrapper del flusso di Google Cloud Storage consente di utilizzare chiamate al file system PHP. Tuttavia, sono disponibili funzionalità estese di cui potresti aver bisogno per utilizzare in modo ottimale Google Cloud Storage. Queste funzionalità estese 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 utili utilità. Tratteremo vari di questi argomenti nelle altre pagine degli argomenti.

Esiste un altro modo per leggere e scrivere file?

Un'app App Engine PHP 5 deve utilizzare il wrapper stream Cloud Storage per scrivere file in fase di runtime. Tuttavia, se un'app deve leggere file che 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);

in cui 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 dell'app in App Engine e devi configurare il file app.yaml in modo che l'app possa accedere a questi file. Per i dettagli completi, consulta Configurazione dell'applicazione PHP 5 con app.yaml.

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

Passaggi successivi

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