NAME

MVC::Neaf::X::Session::File - File-based sessions for Not Even A Framework.

DESCRIPTION

This module implements session storage, as described in MVC::Neaf::X::Session.

It will store session data inside a single directory. The file format is JSON but MAY change in the future.

Uses flock() to avoid collisions.

If session_ttl was specified, old session files will be deleted.

NOTE The file-locking MAY be prone to race conditions. If you want real secure expiration, please specify expiration INSIDE the session, or use a database.

SYNOPSIS

use strict;
use warnings;
use MVC::Neaf;
use MVC::Neaf::X::Session::File;

MVC::Neaf->set_session_engine(
    engine => MVC::Neaf::X::Session::File->new( dir => $mydir )
);
# ... define your application here

METHODS

new( %options )

Constructor. %options may include:

  • session_ttl - how long to store session data.

  • dir (required) - where to store files.

save_session( $id, \%data )

Save session data to a file.

load_session( $id )

Load session data from file. Will DELETE session if session_ttl was specified and exceeded.

delete_session( $id )

Remove a session, if such session is stored at all.

atomic_read( $id )

Internal mechanism beyond load_file.

atomic_write( $id, $content )

Internal mechanism beyond save_session.

get_file_name( $id )

Convert id into filename.

encode_content( $data )

decode_content( $raw )

Currently JSON is used.

LICENSE AND COPYRIGHT

This module is part of MVC::Neaf suite.

Copyright 2016-2023 Konstantin S. Uvarin khedin@cpan.org.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.