(PHP 7 >= 7.1.0, PHP 8)
session_gc — Executa a coleta de lixo de dados da sessão
session_gc() é usado para realizar o GC (coleta de lixo) de dados da sessão. O PHP faz GC de sessão baseado em probabilidade por padrão.
A coleta de lixo baseada em probabilidade funciona até certo ponto, mas possui alguns problemas. 1) Os dados de sessão de sites com baixo tráfego podem não ser excluídos dentro do período preferido. 2) A coleta de lixo em sites com alto tráfego pode ser muito frequente. 3) A coleta de lixo é realizada mediante solicitação do usuário, e o usuário pode experimentar um atraso durante o processo de coleta de lixo.
Portanto, é recomendado executar a coleta de lixo periodicamente em sistemas de produção, utilizando, por exemplo, o "cron" para sistemas semelhantes ao UNIX. Certifique-se de desativar a coleta de lixo baseada em probabilidade definindo session.gc_probability como 0.
Esta função não possui parâmetros.
session_gc() retorna o número de dados de sessão excluídos
em caso de sucesso e false
em caso de falha.
Os manipuladores de salvamento antigos não retornam o número de dados de sessão excluídos, apenas um indicativo de sucesso ou falha. Se este for o caso, o número de dados de sessão excluídos se torna 1, independentemente dos dados realmente excluídos.
Exemplo #1 Exemplo de session_gc() para gerenciadores de tarefas como o cron
<?php
// Observação: Este script deve ser executado pelo mesmo usuário do processo do servidor web.
// É necessário ter uma sessão ativa para inicializar o acesso ao armazenamento de dados da sessão.
session_start();
// Execute a coleta de lixo (GC) imediatamente.
session_gc();
// Limpa o ID da sessão criado pelo
session_destroy();
?>
Exemplo #2 session_gc() example for user accessible script
<?php
// Observação: session_gc() é recomendado para ser usado por um script de gerenciador de tarefas, mas
// pode ser utilizado da seguinte forma.
// Usado para verificar o último horário de coleta de lixo (GC).
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;
session_start();
// Execute a coleta de lixo (GC) apenas quando o período de GC tiver decorrido.
// Ou seja, chamar session_gc() a cada solicitação é desperdício de recursos.
if (file_exists($gc_time)) {
if (filemtime($gc_time) < time() - $gc_period) {
session_gc();
touch($gc_time);
}
} else {
touch($gc_time);
}
?>