O usuário está logado em um site PHP> Eu reinicio o Apache> O usuário precisa efetuar login novamente.
Como evitar isso? (Não quero que o usuário precise fazer login novamente)
O usuário está logado em um site PHP> Eu reinicio o Apache> O usuário precisa efetuar login novamente.
Como evitar isso? (Não quero que o usuário precise fazer login novamente)
Respostas:
Armazenar um token de sessão em um local alternativo como um backup impediria esse problema. Você ainda pode manter suas informações principais $_SESSION
, mas mantenha um token de backup em:
Você pode encontrar ajuda nesta pergunta do StackOverflow: práticas recomendadas para o tempo limite da sessão e o login persistente no php .
Os dados da sua sessão não devem ser perdidos apenas porque o Apache é encerrado ou reiniciado, a menos que os dados da sessão estejam sendo armazenados na memória e não sejam armazenados em backup no disco (pelo sistema de arquivos ou pelo banco de dados). Caso contrário, você poderá reiniciar o servidor inteiro e a sessão ainda persistirá. Os dados da sessão foram projetados para serem armazenados a longo prazo. A única vez que a sessão é perdida é se:
O SID está perdido. Os dados da sessão ainda existem no lado do servidor, mas o cliente não consegue recuperar o SID, portanto, não pode reiniciar a mesma sessão. Isso pode acontecer se o cookie SID expirar (se for um cookie) ou se os links da sessão forem perdidos (se o SID for um parâmetro de URL) ou se o SID estiver desconfigurado no servidor ou alterado sem notificar o cliente.
Os dados da sessão são excluídos do lado do servidor. Isso geralmente acontece quando o PHP Session Garbage Collector é executado e vê que o arquivo da sessão é mais antigo que session.gc_maxlifetime (que é de 24 minutos por padrão). Caso contrário, isso pode acontecer se o aplicativo excluir explicitamente a sessão . Em alguns servidores, o administrador também pode ter configurado um cronjob para limpar regularmente os dados antigos da sessão.
Tornado possível usando o argumento correto com o Apache:
apache2ctl -k graceful
O Apache será reiniciado sem perder as sessões atuais.