Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal bom dia.
Tenho um sistema em uma hospedagem dessas simples, pra ser mais especifico na hostgator com aquele plano M.
O problema aconteve quando eu crio uma $_SESSION['usuario'] para manter o usuario ativo na tela de logado. Não defini nenhum tempo para o destroy da session.
A situação é, se o usuario ficar um tempo com a tela inativa, quando voltar no sistema a session quebra, procurei o suporte técnico da hospedagem mas nao obtive sucesso, nao consigo aumentar um tal de gc_maxlifetime e pesquisei bastante na internet, mas as opções que encontrei(não foram muitas) não resolveram minha situação.
Vim aqui pois vocês podem ter alguma forma mais inteligente de criar uma session que não se destrua, também li algo sobre garbage collector e pode ser alguma coisa sobre isso, mas nao consegui uma solução.
O sistema é bem simples, faz a verificação e cria uma session, nas outras paginas somente verifico se existe a session ou então redireciono para o login.
Bom dia ESerra, fiz o teste e coloquei o código no começo da página, deixei umas meia hora sem atualizar e quando atualizei tinha encerrado.
Coloquei assim:
ini_set('session.gc_maxlifetime','28000');
session_start();
OBS: o valor está para 1440 como você falou
Então, comece pelo simples, remova o que passei e então veja se o script está sendo encerrado antes ou depois dos 1440 segundos, se for antes de nada adiantará aumentar o timelife da sessão.
Fiz um teste e ele está quebrando realmente com 24 minutos.
Se eu colocar um refresh automático de uns 15 em 15 minutos, seria suficiente para segurar a sessão?
O correto é alterar isto a nível de configuração então. O gc_maxlifetime pode ser alterado em todos os locais possíveis (htaccess, php.ini, ini_set)...
Por padrão a sessão é perdida após 1440 segundos de inatividade, o primeiro ponto, você está perdendo a sessão antes ou depois do padrão? Se for antes, veja no com o phpinfo qual o valor que está configurado, se for realmente 1440 ai existe um problema no seu script, se for depois ai de fato é o PHP "fazendo" o que tem que fazer, neste caso, você deverá usar ini_set para alterar isto: