Redis based session handler.  
 More...
|  | 
|  | __construct () | 
|  | Create new instance of handler. 
 | 
|  | 
|  | abort () | 
|  | Release lock on the session without writing it. 
 | 
|  | 
|  | handler_close () | 
|  | Close the session completely. 
 | 
|  | 
|  | handler_destroy ($id) | 
|  | Handle destroying a session. 
 | 
|  | 
|  | handler_gc ($maxlifetime) | 
|  | Garbage collect sessions. 
 | 
|  | 
|  | handler_open ($savepath, $sessionname) | 
|  | Update our session search path to include session name when opened. 
 | 
|  | 
|  | handler_read ($id) | 
|  | Read the session data from storage. 
 | 
|  | 
|  | handler_write ($id, $data) | 
|  | Write the serialized session data to our session store. 
 | 
|  | 
|  | 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. 
 | 
|  | 
|  | requires_write_lock () | 
|  | Has this session been opened with a writelock? Your handler should call this during start() if you support read-only sessions. 
 | 
|  | 
|  | session_exists ($sid) | 
|  | Check the backend contains data for this session id. 
 | 
|  | 
|  | set_requires_write_lock ($requireswritelock) | 
|  | This is called after init() and before start() to indicate whether the session opened should be writable or not. 
 | 
|  | 
|  | start () | 
|  | Start the session. 
 | 
|  | 
|  | write_close () | 
|  | Write the session and release lock. 
 | 
|  | 
|  | 
| const | COMPRESSION_GZIP = 'gzip' | 
|  | Compressor: PHP GZip. 
 | 
|  | 
| const | COMPRESSION_NONE = 'none' | 
|  | Compressor: none. 
 | 
|  | 
| const | COMPRESSION_ZSTD = 'zstd' | 
|  | Compressor: PHP Zstandard. 
 | 
|  | 
|  | 
|  | lock_session ($id) | 
|  | Obtain a session lock so we are the only one using it at the moment. 
 | 
|  | 
|  | time () | 
|  | Return the current time. 
 | 
|  | 
|  | unlock_session ($id) | 
|  | Unlock a session. 
 | 
|  | 
|  | 
| int | $acquiretimeout = 120 | 
|  | $acquiretimeout how long to wait for session lock in seconds 
 | 
|  | 
| int | $acquirewarn = null | 
|  | $acquirewarn how long before warning when waiting for a lock in seconds 
 | 
|  | 
| string | $auth = '' | 
|  | $auth redis password 
 
 | 
|  | 
| int | $compressor = self::COMPRESSION_NONE | 
|  | $compressor The compressor to use 
 | 
|  | 
| Redis | $connection = null | 
|  | Connection. 
 | 
|  | 
| int | $database = 0 | 
|  | $database the Redis database to store sesions in 
 | 
|  | 
| string | $host = '' | 
|  | $host save_path string 
 
 | 
|  | 
| string | $lasthash = null | 
|  | $lasthash hash of the session data content 
 | 
|  | 
| 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. 
 | 
|  | 
| int | $lockretry = 100 | 
|  | $lockretry how long to wait between session lock attempts in ms 
 | 
|  | 
| 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 
 | 
|  | 
| boolean | $requireswritelock = false | 
|  | $requireswritelock does the session need and/or have a lock? 
 | 
|  | 
| int | $serializer = Redis::SERIALIZER_PHP | 
|  | $serializer The serializer to use 
 | 
|  | 
| array | $sslopts = [] | 
|  | $sslopts SSL options, if applicable 
 | 
|  | 
| int | $timeout | 
|  | $timeout How long sessions live before expiring. 
 | 
|  | 
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
- Copyright
- 2016 Russell Smith 
- License
- http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 
◆ abort()
  
  | 
        
          | core\session\handler::abort | ( |  | ) |  |  | inherited | 
 
Release lock on the session without writing it. 
May not be possible in older versions of PHP. If so, session may be written anyway so that any locks are released. 
 
 
◆ 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
- 
  
    | bool | true on success. false on unable to unlock sessions. |  
 
 
 
◆ handler_destroy()
      
        
          | core\session\redis::handler_destroy | ( |  | $id | ) |  | 
      
 
Handle destroying a session. 
- Parameters
- 
  
    | string | $id | the session id to destroy. |  
 
- Return values
- 
  
    | bool | true 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 | $maxlifetime | All sessions older than this should be removed. |  
 
- Return values
- 
  
    | bool | true, 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 | $savepath | unused session save path. (ignored) |  | string | $sessionname | Session name for this session. (ignored) |  
 
- Return values
- 
  
    | bool | true always as we will succeed. |  
 
 
 
◆ handler_read()
      
        
          | core\session\redis::handler_read | ( |  | $id | ) |  | 
      
 
Read the session data from storage. 
- Parameters
- 
  
    | string | $id | The session id to read from storage. |  
 
- Return values
- 
  
    | string | The session data for PHP to process. |  
 
- Exceptions
- 
  
    | RedisException | when 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 | $id | session id to write. |  | string | $data | session data |  
 
- Return values
- 
  
    | bool | true on write success, false on failure |  
 
 
 
◆ init()
      
        
          | core\session\redis::init | ( |  | ) |  | 
      
 
 
◆ kill_all_sessions()
      
        
          | core\session\redis::kill_all_sessions | ( |  | ) |  | 
      
 
Kill all active sessions, the core sessions table is purged afterwards. 
Reimplemented from core\session\handler.
 
 
◆ kill_session()
      
        
          | core\session\redis::kill_session | ( |  | $sid | ) |  | 
      
 
Kill one session, the session record is removed afterwards. 
- Parameters
- 
  
  
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 moment. 
- Parameters
- 
  
    | string | $id | The session id to lock. |  
 
- Return values
- 
  
    | bool | true when session was locked, exception otherwise. |  
 
- Exceptions
- 
  
    | exception | When we are unable to obtain a session lock. |  
 
 
 
◆ requires_write_lock()
  
  | 
        
          | core\session\handler::requires_write_lock | ( |  | ) |  |  | inherited | 
 
Has this session been opened with a writelock? Your handler should call this during start() if you support read-only sessions. 
- Return values
- 
  
    | bool | true if session is intended to have a write 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
- 
  
  
- Return values
- 
  
    | bool | true if session found. |  
 
Reimplemented from core\session\handler.
 
 
◆ set_requires_write_lock()
  
  | 
        
          | core\session\handler::set_requires_write_lock | ( |  | $requireswritelock | ) |  |  | inherited | 
 
This is called after init() and before start() to indicate whether the session opened should be writable or not. 
This is intentionally captured even if your handler doesn't support non-locking sessions, so that behavior (upon session close) matches closely between handlers. 
- Parameters
- 
  
    | bool | $requireswritelock | true if needs to be open for writing |  
 
 
 
◆ start()
      
        
          | core\session\redis::start | ( |  | ) |  | 
      
 
 
◆ time()
  
  | 
        
          | core\session\redis::time | ( |  | ) |  |  | protected | 
 
Return the current time. 
- Return values
- 
  
    | int | the current time as a unixtimestamp. |  
 
 
 
◆ unlock_session()
  
  | 
        
          | core\session\redis::unlock_session | ( |  | $id | ) |  |  | protected | 
 
Unlock a session. 
- Parameters
- 
  
    | string | $id | Session id to be unlocked. |  
 
 
 
◆ write_close()
  
  | 
        
          | core\session\handler::write_close | ( |  | ) |  |  | inherited | 
 
Write the session and release lock. 
If the session was not intentionally opened with a write lock, then we will abort the session instead if able. 
 
 
The documentation for this class was generated from the following file: