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