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ê usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Configure a CLI gcloud para usar seu
novo projeto do Google Cloud:
Substitua# Configure gcloud for your project gcloud config set project PROJECT_ID
PROJECT_ID
pelo ID do projeto do Google Cloud 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 sessions
Instale 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.php
com 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:8080
Veja 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 navegador, acesse
http://localhost:8080
.Você 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. Veja e edite os dados da sessão no Console do Google Cloud.
Para interromper o servidor HTTP, pressione
Control+C
na 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.yaml
e copie o seguinte:Implante o aplicativo no App Engine:
gcloud app deploy
Para visualizar o aplicativo ativo, insira o seguinte URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Substitua:
PROJECT_ID
: é o ID do projeto do Google Cloud.REGION_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 limpa 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
gcloud
foram 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 console do Google Cloud, acesse a página do Explorador de registros.
Acessar a página da 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 console do Google Cloud, verifique se o código do 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir a instância do App Engine
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Para excluir a versão do app, clique em Excluir.