Ir para o conteúdo principal
Github

Sessão

As sessões permitem armazenar informações do usuário em várias requisições.

A diferença de session_start() é que o bloqueio só ocorre durante a leitura, gravação e regeneração, tornando-o um pouco mais flexível, e também pode gravar dados após o envio dos cabeçalhos.

Criando uma sessão

Exemplo de criação de uma sessão, definição de valores e persistencia:

use Inphinit\Session; $session = new Session('session'); echo 'Session ID: ', $session->getId(), '<br>'; echo '<h2>Before:</h2>'; echo '<pre>'; var_dump($session->float); var_dump($session->int); var_dump($session->octal); echo '</pre>'; $session->float = microtime(true); $session->int = time(); $session->octal = 0666; echo '<h2>After:</h2>'; echo '<pre>'; var_dump($session->float); var_dump($session->int); var_dump($session->octal); echo '</pre>'; $session->commit();

Removendo arquivos de sessão inativos

A variavel de ambiente APP_SESSION_MAX_INACTIVE deve ser usada para definir o tempo para remover um arquivo de sessão como considerado inativo. No entanto essa execução não ocorre automaticamente, para limpar arquivos de sessão inativos pode usar o comando run session:clear.

Em Windows execute:

run session:clear

Em outros sistemas execute:

./run session:clear

Ou usando o executável PHP, funcionará em qualquer sistema operacional:

php run session:clear

Agendando limpeza automaticamente

Através do sistema de Agendamento de tarefas é possivel automizar a limpeza em paralelo, adicionando no arquivo system/console.php algo como:

// Obtêm o comando built-in $command = $console->getCommand('session:clear'); if ($command !== null) { // Agenda o comando para ser executado todo Domingo as 04:00 AM (UTC) $scheduler->command('session_clear_task', $command, [])->cron(0, 4, '*', '*', 0); }