Questo tutorial mostra come gestire le sessioni in App Engine.
Molte app richiedono la gestione delle sessioni per l'autenticazione e le preferenze utente. PHP include un'implementazione basata sulla memoria per eseguire questa funzione. Tuttavia, questa implementazione non è adatta a un'app che può essere pubblicata da più istanze, perché la sessione registrata in un'istanza potrebbe essere diversa da altre istanze.
Obiettivi
- Scrivere l'app.
- Eseguire l'app in locale.
- Eseguire il deployment dell'app su App Engine.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installa Google Cloud CLI.
-
Configura gcloud CLI per utilizzare la tua identità federata.
Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init - Configura gcloud CLI in modo che utilizzi il
nuovo Google Cloud progetto:
Sostituisci# Configure gcloud for your project gcloud config set project PROJECT_ID
PROJECT_IDcon l'ID progetto che hai creato o selezionato in precedenza. Google Cloud
Configurazione del progetto
Nella finestra del terminale, inizia in una directory a tua scelta e crea una nuova directory denominata
sessions. Tutto il codice di questo tutorial si trova nella directorysessions.Passa alla directory
sessions:cd sessionsInstalla le dipendenze:
composer require google/cloud-firestore
Alla fine di questo tutorial, la struttura dei file finale è simile alla seguente:
sessions
├── app.yaml
└── composer.json
├── index.php
Scrivere l'app
Nella finestra del terminale, crea un file denominato
index.phpcon il seguente contenuto:
Questa app mostra saluti in lingue diverse per ogni utente. Gli utenti che tornano vengono sempre salutati nella stessa lingua.
Prima che l'app possa memorizzare le preferenze di un utente, devi avere un modo per memorizzare le informazioni sull'utente corrente in una sessione. Questa app di esempio utilizza Firestore per archiviare i dati delle sessioni.
Puoi utilizzare il Firestore session handler per utilizzare Firestore per le sessioni PHP.
Il seguente diagramma illustra in che modo Firestore gestisce le sessioni per l'app App Engine.
Dopo aver impostato session_set_save_handler, ogni richiesta ha una variabile globale $_SESSION che puoi utilizzare per accedere alla sessione. I dati della sessione vengono archiviati in Firestore.
Eseguire in locale
Avvia il server web PHP integrato:
php -S localhost:8080Visualizza l'app nel browser web:
Cloud Shell
Nella barra degli strumenti di Cloud Shell, fai clic su Anteprima web
e seleziona Anteprima sulla porta 8080.Macchina locale
Nel browser, vai a
http://localhost:8080Viene visualizzato uno dei cinque saluti: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" o "Ciao Mondo". La lingua cambia se apri la pagina in un browser diverso o in modalità di navigazione in incognito. Puoi visualizzare e modificare i dati della sessione nella Google Cloud console.

Per arrestare il server HTTP, nella finestra del terminale premi
Control+C.
Eseguire il deployment e l'esecuzione su App Engine
Puoi utilizzare l' ambiente standard di App Engine per creare ed eseguire il deployment di un'app che viene eseguita in modo affidabile con carichi elevati e grandi quantità di dati.
Questo tutorial utilizza l'ambiente standard di App Engine per eseguire il deployment del server.
Nella finestra del terminale, crea un file
app.yamle copia quanto segue:Esegui il deployment dell'app su App Engine:
gcloud app deployPer visualizzare l'app live, inserisci il seguente URL:
https://PROJECT_ID.REGION_ID.r.appspot.comSostituisci quanto segue:
PROJECT_ID: l'ID progetto Google CloudREGION_ID: un codice assegnato da App Engine alla tua app
Il saluto viene ora fornito da un server web in esecuzione su un'istanza App Engine.
Eliminare le sessioni
PHP esegue la garbage collection (GC) delle sessioni,
che rimuove le sessioni vecchie e scadute
in base alla configurazione php.ini. Il gestore delle sessioni di Firestore non esegue la pulizia delle sessioni per impostazione predefinita, ma puoi configurarlo in modo che lo faccia passando un'opzione gcLimit durante la creazione del gestore delle sessioni:
Le sessioni vengono rimosse utilizzando la GC delle sessioni basata sulla probabilità o quando chiami esplicitamente la funzione session_gc.
Eseguire il debug dell'app
Se non riesci a connetterti all'app App Engine, controlla quanto segue:
- Verifica che i comandi di deployment
gcloudsiano stati completati correttamente e non abbiano generato errori. Se si sono verificati errori (ad esempio,message=Build failed), correggili e prova a eseguire di nuovo il deployment dell'app App Engine. Nella Google Cloud console, vai alla pagina Esplora log.
Nell'elenco a discesa Risorse selezionate di recente, fai clic Applicazione App Engine, quindi fai clic su Tutti module_id. Viene visualizzato un elenco di richieste da quando hai visitato l'app. Se non vedi un elenco di richieste, verifica di aver selezionato Tutti module_id dall'elenco a discesa. Se nella Google Cloud console vengono visualizzati messaggi di errore, verifica che il codice dell'app corrisponda a l codice nella sezione relativa alla scrittura dell'app web.
Assicurati che l'API Firestore sia abilitata.
Libera spazio
Elimina il progetto
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
Elimina l'istanza App Engine
- Nella Google Cloud console, vai alla pagina Versioni di App Engine.
- Seleziona la casella di controllo per la versione dell'app non predefinita che vuoi eliminare.
- Per eliminare la versione dell'app, fai clic su Elimina.