Pergunta

Se eu acertar uma página que chama session_start(). Quanto tempo eu teria que esperar, de modo que se eu fosse para atualizar a página, I foi emitido um novo ID de sessão?

Foi útil?

Solução

Confira php.ini o conjunto valor para session.gc_maxlifetime é a vida ID em segundos.

Eu acredito que o padrão é 1440 segundos (24 minutos)

http://www.php.net/manual/en/session. configuration.php

Editar: Como alguns comentários apontam, o acima não é totalmente preciso. Uma explicação maravilhosa de por que, e como implementá-vidas sessão está disponível aqui:

Como faço para expirar uma sessão PHP após 30 minutos?

Outras dicas

O padrão nas php.ini para a directiva session.gc_maxlifetime (o "gc" é para coleta de lixo) é de 1440 segundos ou 24 minutos. Veja a página de Sessão Runtime Configuation no manual:

http://www.php.net/manual/en/session. configuration.php

Você pode alterar essa constante no php.ini ou .httpd.conf arquivos se você tem acesso a eles, ou no arquivo .htaccess local no seu web site. Para definir o tempo limite de uma hora usando o método .htaccess, adicione esta linha ao arquivo .htaccess no diretório raiz do site:

php_value session.gc_maxlifetime "3600"

Tenha cuidado se você estiver em um servidor compartilhado ou se hospedar mais de um site onde você não tiver alterado o padrão. A localização sessão padrão é o diretório / tmp, ea rotina de coleta de lixo será executado a cada 24 minutos para esses outros sites (e acabar com as suas sessões no processo, independentemente de quanto tempo eles deve ser mantido) . Veja a nota na página do manual ou neste site para uma explicação melhor.

A resposta para isso é mover suas sessões para outro diretório usando session.save_path. Isso também ajuda a prevenir maus seqüestro sessões dos seus visitantes do diretório padrão / tmp.

De acordo com um usuário em PHP.net local, seus esforços para manter a sessão viva falhou, então ele teve que fazer uma solução alternativa.

<?php

$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";

$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData

is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) {
    ini_set("url_rewriter.tags", "");
    ini_set("session.use_trans_sid", false);

}

ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();

?>

Em sessiondata pasta serão armazenados arquivos de texto para a realização de informações da sessão, cada arquivo seria ter um nome semelhante a "sess_a_big_hash_here".

depende de suas configurações do PHP ...
usar phpinfo() e dar uma olhada no capítulo sessão. Há valores como session.gc_maxlifetime e session.cache_expire e session.cookie_lifetime que afeta a vida útil sessões

EDIT: é como Martin escrita antes

Mas cuidado, na maioria dos xampp / AMPP /...- configurações e alguns destributions linux que é 0, o que significa que o arquivo nunca vai ficar excluído até que você fazê-lo dentro de seu roteiro (ou sujo via shell)

PHP.INI:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0

Você pode usar algo como ini_set('session.gc_maxlifetime', 28800); // 8 * 60 * 60 também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top