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);
}