Veja neste tutorial como gerenciar sessões no App Engine.
Muitos aplicativos precisam gerenciar sessões de autenticação e preferências do usuário. O PHP tem uma implementação baseada em memória para executar essa função. No entanto, essa implementação não é adequada para um aplicativo que pode ser veiculado de várias instâncias, porque a sessão gravada em uma instância pode ser diferente nas outras.
Objetivos
- Gravar o aplicativo.
- Executar o aplicativo localmente.
- Implantar o aplicativo no App Engine.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar a performance dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init - Configure a CLI gcloud para usar seu
novo Google Cloud projeto:
Substitua# Configure gcloud for your project gcloud config set project PROJECT_ID
PROJECT_IDpelo ID do Google Cloud projeto que você criou ou selecionou anteriormente.
Como configurar o projeto
Na janela de terminal, inicie em um diretório de sua escolha e crie um novo diretório chamado
sessions. Todo o código deste tutorial está dentro do diretóriosessions.Mude para o diretório
sessions:cd sessionsInstale as dependências:
composer require google/cloud-firestore
No final deste tutorial, a estrutura final do arquivo é semelhante à seguinte:
sessions
├── app.yaml
└── composer.json
├── index.php
Como gravar o aplicativo
Na janela de terminal, crie um arquivo chamado
index.phpcom o seguinte conteúdo:
Esse aplicativo exibe saudações em idiomas diferentes para cada usuário. Usuários recorrentes são sempre recebidos no mesmo idioma.
Para que o app possa armazenar as preferências de um usuário, você precisa de uma maneira de armazenar informações sobre o usuário atual em uma sessão. Este app de amostra usa o Firestore para armazenar esses dados.
Você pode usar o Firestore session handler para usar o Firestore em sessões do PHP.
Veja no diagrama a seguir como o Firestore gerencia as sessões do aplicativo do App Engine.
Depois que você definir session_set_save_handler, cada solicitação terá uma variável global $_SESSION que pode ser usada para acessar a sessão. Os dados da sessão são armazenados no Firestore.
Como executar no local
Inicie o servidor da Web PHP integrado:
php -S localhost:8080Veja seu app no navegador da Web:
Cloud Shell
Na barra de ferramentas do Cloud Shell, clique em Visualização da Web
e selecione Visualizar na porta 8080.Máquina local
No seu navegador, acesse
http://localhost:8080Você verá uma das cinco saudações: "Hello World"," "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". O idioma será alterado se você abrir a página em um navegador diferente ou no modo de navegação anônima. Você pode conferir e editar os dados da sessão no Google Cloud console.

Para interromper o servidor HTTP, pressione
Control+Cna janela do terminal.
Como implantar e executar no App Engine
Use o ambiente padrão do App Engine para criar e implantar um aplicativo que seja executado de forma confiável sob carga pesada e com grandes quantidades de dados.
Neste tutorial, o ambiente padrão do App Engine é usado para implantar o servidor.
Na janela de terminal, crie um arquivo
app.yamle copie o seguinte:Implante o aplicativo no App Engine:
gcloud app deployPara visualizar o aplicativo ativo, insira o seguinte URL:
https://PROJECT_ID.REGION_ID.r.appspot.comSubstitua:
PROJECT_ID: o ID do Google Cloud projetoREGION_ID: um código que o App Engine atribui ao seu app
A saudação agora é entregue por um servidor da Web executado em uma instância do App Engine.
Como excluir sessões
O PHP executa a sessão coleta de lixo (GC, na sigla em inglês) (link em inglês),
que remove sessões antigas e expiradas
de acordo com a configuração php.ini. O gerenciador de sessão do Firestore não libera memória de sessões por padrão, mas você pode configurá-lo para fazer isso ao transmitir uma opção gcLimit durante a criação do gerenciador de sessão:
As sessões são removidas usando a GC com base em probabilidade ou quando você chama a função session_gc explicitamente.
Como depurar o aplicativo
Se você não conseguir se conectar ao aplicativo do App Engine, verifique o seguinte:
- Verifique se os comandos de implantação
gcloudforam concluídos com êxito e não geraram erros. Se houver erros (por exemplo,message=Build failed), corrija-os e tente implantar o aplicativo do App Engine novamente. No Google Cloud console do, acesse a página Análise de registros.
Acessar a página Análise de registros
Na lista suspensa Recursos selecionados recentemente , clique em Aplicativo App Engine e, em seguida, clique em Todos os module_id. Você verá uma lista de solicitações de quando visitou seu aplicativo. Caso contrário, verifique se você selecionou Todos os module_id na lista suspensa. Se você vir mensagens de erro impressas no Google Cloud console, verifique se o código do seu aplicativo corresponde ao código na seção sobre como gravar o app da Web.
Verifique se a API Firestore está ativada.
Limpar
Excluir o projeto
- No Google Cloud console, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.
Excluir a instância do App Engine
- No Google Cloud console do, acesse a página Versões do App Engine.
- Marque a caixa de seleção da versão não padrão do app que você quer excluir.
- Para excluir a versão do app, clique em Excluir.