Por que o PHP ignora session.gc_maxlifetime? [duplicado]

2

Temos um servidor baseado em WAMP configurado. php.ini está configurado com o seguinte:

session.gc_maxlifetime = 60*60*12
session.save_path = "d:/wamp/tmp"

O problema que estamos enfrentando é que os arquivos de sessão dentro da pasta tmp estão sendo esporadicamente deletados e não podemos dizer o porquê. As sessões durarão de 10 minutos a 40 minutos, quando devem durar 12 horas.

Este é um ambiente de host virtual, mas nenhum dos códigos que usamos nesses sites sobrescreve essa configuração (com ini_set , apache config PHP valores ou outros) então não podemos ver porque eles estão sendo excluídos. Também não há tarefas agendadas para excluir os arquivos.

Existe uma maneira de descobrir com sucesso por que gc_maxlifetime está sendo ignorado? Para o registro, eu mudei um dos nossos sites para usar session_save_path('D:/wamp/tmptmp'); temporariamente apenas para verificar que era a coleta de lixo, e os arquivos de sessão permanecem intocados - embora isso não dê muito mais pistas.

    
por Leonard Challis 30.10.2013 / 11:01

2 respostas

1

A configuração de session.gc_maxlifetime determinará quanto tempo antes que os dados sejam considerados lixo. Após esse período, os dados da sessão poderão ser excluídos quando ocorrer "coleta de lixo". Mas isso não impede que a sua sessão seja excluída por algum outro motivo.

Verifique a resposta de Gumbo aqui ele / ela diz "A melhor solução é implementar um tempo limite de sessão por conta própria".

    
por 06.11.2013 / 18:42
1

Enfrentou o mesmo problema ao tentar agrupar um determinado projeto.

Eu descobri que o problema foi causado por:

/**
session_regenerate_id(true);

**/

Tente excluí-lo do seu código ou defina o argumento como falso.

    
por 02.08.2014 / 15:26

Tags