più semplicemente le sessioni lavorano con una funzione di garbage..
se associ la funzione di garbage alla tua classe sessioni o associ direttamente una funzione di garbage alle sessioni puoi far si che dopo un certo periodo le sessioni si puliscano da sole..
es
codice:
session_set_save_handler( 'open', 'close', 'read', 'write', 'destroy', 'gc' );
function gc( $maxlifetime ) {
$pdo = new PDO( 'tuoi dati' );
$query = "DELETE FROM sessions WHERE expiry < DATE_SUB(NOW(), INTERVAL $maxlifetime SECOND)";
$pdo->execute( $query );
return TRUE;
}
oppure come classe:
codice:
class session {
private $pdo;
public function __construct( myPDO $pdo ) {
$this->pdo = $pdo;
session_set_save_handler(
array($this, 'open'),
array($this, 'close'),
array($this, 'read'),
array($this, 'write'),
array($this, 'destroy'),
array($this, 'gc')
);
session_start();
}
public function open($path, $name) {
}
public function close() {
}
public function read( $id ) {
}
public function write( $id, $data ) {
}
public function destroy( $id ) {
}
public function gc( $maxlifetime ) {
$query = "DELETE FROM sessions WHERE expiry < DATE_SUB(NOW(), INTERVAL $maxlifetime SECOND)";
$this->pdo->executeQuery( $query );
return TRUE;
}
}