Moodle APIs  3.8
Moodle 3.8.6 (Build: 20201109)
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
core\session\redis Class Reference

Redis based session handler. More...

Inheritance diagram for core\session\redis:
core\session\handler

Public Member Functions

 __construct ()
 Create new instance of handler.
 
 handler_close ()
 Close the session completely. More...
 
 handler_destroy ($id)
 Handle destroying a session. More...
 
 handler_gc ($maxlifetime)
 Garbage collect sessions. More...
 
 handler_open ($savepath, $sessionname)
 Update our session search path to include session name when opened. More...
 
 handler_read ($id)
 Read the session data from storage. More...
 
 handler_write ($id, $data)
 Write the serialized session data to our session store. More...
 
 init ()
 Init session handler.
 
 kill_all_sessions ()
 Kill all active sessions, the core sessions table is purged afterwards.
 
 kill_session ($sid)
 Kill one session, the session record is removed afterwards. More...
 
 session_exists ($sid)
 Check the backend contains data for this session id. More...
 
 start ()
 Start the session. More...
 

Protected Member Functions

 lock_session ($id)
 Obtain a session lock so we are the only one using it at the moent. More...
 
 time ()
 Return the current time. More...
 
 unlock_session ($id)
 Unlock a session. More...
 

Protected Attributes

int $acquiretimeout = 120
 $acquiretimeout how long to wait for session lock in seconds
 
string $auth = ''
 $auth redis password

 
Redis $connection = null
 Connection.
 
int $database = 0
 $database the Redis database to store sesions in
 
string $host = ''
 $host save_path string

 
int $lockexpire
 $lockexpire how long to wait in seconds before expiring the lock automatically so that other requests may continue execution, ignored if PECL redis is below version 2.2.0.
 
array $locks = array()
 $locks List of currently held locks by this page.
 
int $port = 6379
 $port The port to connect to
 
array $prefix = ''
 $servers list of servers parsed from save_path
 
int $serializer = Redis::SERIALIZER_PHP
 $serializer The serializer to use
 
int $timeout
 $timeout How long sessions live before expiring.
 

Detailed Description

Redis based session handler.

The default Redis session handler does not handle locking in 2.2.7, so we have written a php session handler that uses locking. The places where locking is used was modeled from the memcached code that is used in Moodle https://github.com/php-memcached-dev/php-memcached/blob/master/php_memcached_session.c

License
http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later

Member Function Documentation

◆ handler_close()

core\session\redis::handler_close ( )

Close the session completely.

We also remove all locks we may have obtained that aren't expired.

Return values
booltrue on success. false on unable to unlock sessions.

◆ handler_destroy()

core\session\redis::handler_destroy (   $id)

Handle destroying a session.

Parameters
string$idthe session id to destroy.
Return values
booltrue if the session was deleted, false otherwise.

◆ handler_gc()

core\session\redis::handler_gc (   $maxlifetime)

Garbage collect sessions.

We don't we any as Redis does it for us.

Parameters
integer$maxlifetimeAll sessions older than this should be removed.
Return values
booltrue, as Redis handles expiry for us.

◆ handler_open()

core\session\redis::handler_open (   $savepath,
  $sessionname 
)

Update our session search path to include session name when opened.

Parameters
string$savepathunused session save path. (ignored)
string$sessionnameSession name for this session. (ignored)
Return values
booltrue always as we will succeed.

◆ handler_read()

core\session\redis::handler_read (   $id)

Read the session data from storage.

Parameters
string$idThe session id to read from storage.
Return values
stringThe session data for PHP to process.
Exceptions
RedisExceptionwhen we are unable to talk to the Redis server.

◆ handler_write()

core\session\redis::handler_write (   $id,
  $data 
)

Write the serialized session data to our session store.

Parameters
string$idsession id to write.
string$datasession data
Return values
booltrue on write success, false on failure

◆ kill_session()

core\session\redis::kill_session (   $sid)

Kill one session, the session record is removed afterwards.

Parameters
string$sid

Reimplemented from core\session\handler.

◆ lock_session()

core\session\redis::lock_session (   $id)
protected

Obtain a session lock so we are the only one using it at the moent.

Parameters
string$idThe session id to lock.
Return values
booltrue when session was locked, exception otherwise.
Exceptions
exceptionWhen we are unable to obtain a session lock.

◆ session_exists()

core\session\redis::session_exists (   $sid)

Check the backend contains data for this session id.

Note: this is intended to be called from manager::session_exists() only.

Parameters
string$sid
Return values
booltrue if session found.

Reimplemented from core\session\handler.

◆ start()

core\session\redis::start ( )

Start the session.

Return values
boolsuccess

Reimplemented from core\session\handler.

◆ time()

core\session\redis::time ( )
protected

Return the current time.

Return values
intthe current time as a unixtimestamp.

◆ unlock_session()

core\session\redis::unlock_session (   $id)
protected

Unlock a session.

Parameters
string$idSession id to be unlocked.

The documentation for this class was generated from the following file: