Class yii\web\DbSession
Inheritance | yii\web\DbSession » yii\web\MultiFieldSession » yii\web\Session » yii\base\Component » yii\base\BaseObject |
---|---|
Implements | ArrayAccess, Countable, IteratorAggregate, yii\base\Configurable |
Available since version | 2.0 |
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/web/DbSession.php |
DbSession extends yii\web\Session by using database as session data storage.
By default, DbSession stores session data in a DB table named 'session'. This table must be pre-created. The table name can be changed by setting $sessionTable.
The following example shows how you can configure the application to use DbSession:
Add the following to your application config under components
:
'session' => [
'class' => 'yii\web\DbSession',
// 'db' => 'mydb',
// 'sessionTable' => 'my_session',
]
DbSession extends yii\web\MultiFieldSession, thus it allows saving extra fields into the $sessionTable. Refer to yii\web\MultiFieldSession for more details.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$db | yii\db\Connection|array|string | The DB connection object or the application component ID of the DB connection. | yii\web\DbSession |
$flashParam | string | The name of the session variable that stores the flash message data. | yii\web\Session |
$handler | SessionHandlerInterface|array | An object implementing the SessionHandlerInterface or a configuration array. | yii\web\Session |
$readCallback | callable | A callback that will be called during session data reading. | yii\web\MultiFieldSession |
$sessionTable | string | The name of the DB table that stores the session data. | yii\web\DbSession |
$writeCallback | callable | A callback that will be called during session data writing. | yii\web\MultiFieldSession |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
$_forceRegenerateId | string|null | Holds the session id in case useStrictMode is enabled and the session id needs to be regenerated | yii\web\Session |
$_originalSessionModule | string|null | Holds the original session module (before a custom handler is registered) so that it can be restored when a Session component without custom handler is used after one that has. | yii\web\Session |
$fields | array | Session fields to be written into session table columns | yii\web\DbSession |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\Component |
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of a component property. | yii\base\Component |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
__set() | Sets the value of a component property. | yii\base\Component |
__unset() | Sets a component property to be null. | yii\base\Component |
addFlash() | Adds a flash message. | yii\web\Session |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
close() | Ends the current session and store session data. | yii\web\DbSession |
closeSession() | Session close handler. | yii\web\Session |
count() | Returns the number of items in the session. | yii\web\Session |
destroy() | Frees all session variables and destroys all data registered to a session. | yii\web\Session |
destroySession() | Session destroy handler. | yii\web\DbSession |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
gcSession() | Session GC (garbage collection) handler. | yii\web\DbSession |
get() | Returns the session variable value with the session variable name. | yii\web\Session |
getAllFlashes() | Returns all flash messages. | yii\web\Session |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
getCacheLimiter() | Returns current cache limiter | yii\web\Session |
getCookieParams() | yii\web\Session | |
getCount() | Returns the number of items in the session. | yii\web\Session |
getFlash() | Returns a flash message. | yii\web\Session |
getGCProbability() | yii\web\Session | |
getHasSessionId() | Returns a value indicating whether the current request has sent the session ID. | yii\web\Session |
getId() | Gets the session ID. | yii\web\Session |
getIsActive() | yii\web\Session | |
getIterator() | Returns an iterator for traversing the session variables. | yii\web\Session |
getName() | Gets the name of the current session. | yii\web\Session |
getSavePath() | Gets the current session save path. | yii\web\Session |
getTimeout() | yii\web\Session | |
getUseCookies() | Returns the value indicating whether cookies should be used to store session IDs. | yii\web\Session |
getUseCustomStorage() | Returns a value indicating whether to use custom session storage. | yii\web\MultiFieldSession |
getUseStrictMode() | yii\web\Session | |
getUseTransparentSessionID() | yii\web\Session | |
has() | yii\web\Session | |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasFlash() | Returns a value indicating whether there are flash messages associated with the specified key. | yii\web\Session |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
init() | Initializes the DbSession component. | yii\web\DbSession |
off() | Detaches an existing event handler from this component. | yii\base\Component |
offsetExists() | This method is required by the interface ArrayAccess. | yii\web\Session |
offsetGet() | This method is required by the interface ArrayAccess. | yii\web\Session |
offsetSet() | This method is required by the interface ArrayAccess. | yii\web\Session |
offsetUnset() | This method is required by the interface ArrayAccess. | yii\web\Session |
on() | Attaches an event handler to an event. | yii\base\Component |
open() | Starts the session. | yii\web\Session |
openSession() | Session open handler. | yii\web\DbSession |
readSession() | Session read handler. | yii\web\DbSession |
regenerateID() | {@inheritdoc} | yii\web\DbSession |
remove() | Removes a session variable. | yii\web\Session |
removeAll() | Removes all session variables. | yii\web\Session |
removeAllFlashes() | Removes all flash messages. | yii\web\Session |
removeFlash() | Removes a flash message. | yii\web\Session |
set() | Adds a session variable. | yii\web\Session |
setCacheLimiter() | Set cache limiter | yii\web\Session |
setCookieParams() | Sets the session cookie parameters. | yii\web\Session |
setFlash() | Sets a flash message. | yii\web\Session |
setGCProbability() | yii\web\Session | |
setHasSessionId() | Sets the value indicating whether the current request has sent the session ID. | yii\web\Session |
setId() | Sets the session ID. | yii\web\Session |
setName() | Sets the name for the current session. | yii\web\Session |
setSavePath() | Sets the current session save path. | yii\web\Session |
setTimeout() | yii\web\Session | |
setUseCookies() | Sets the value indicating whether cookies should be used to store session IDs. | yii\web\Session |
setUseStrictMode() | yii\web\Session | |
setUseTransparentSessionID() | yii\web\Session | |
trigger() | Triggers an event. | yii\base\Component |
writeSession() | Session write handler. | yii\web\DbSession |
Protected Methods
Method | Description | Defined By |
---|---|---|
composeFields() | Composes storage field set for session writing. | yii\web\MultiFieldSession |
extractData() | Extracts session data from storage field set. | yii\web\MultiFieldSession |
freeze() | If session is started it's not possible to edit session ini settings. In PHP7.2+ it throws exception. | yii\web\Session |
getReadQuery() | Generates a query to get the session from db | yii\web\DbSession |
registerSessionHandler() | Registers session handler. | yii\web\Session |
typecastFields() | Method typecasts $fields before passing them to PDO. | yii\web\DbSession |
unfreeze() | Starts session and restores data from temporary variable | yii\web\Session |
updateFlashCounters() | Updates the counters for flash messages and removes outdated flash messages. | yii\web\Session |
Property Details
The DB connection object or the application component ID of the DB connection. After the DbSession object is created, if you want to change this property, you should only assign it with a DB connection object. Starting from version 2.0.2, this can also be a configuration array for creating the object.
Session fields to be written into session table columns
The name of the DB table that stores the session data. The table should be pre-created as follows:
CREATE TABLE session
(
id CHAR(40) NOT NULL PRIMARY KEY,
expire INTEGER,
data BLOB
)
where 'BLOB' refers to the BLOB-type of your preferred DBMS. Below are the BLOB type that can be used for some popular DBMS:
- MySQL: LONGBLOB
- PostgreSQL: BYTEA
- MSSQL: BLOB
When using DbSession in a production server, we recommend you create a DB index for the 'expire' column in the session table to improve the performance.
Note that according to the php.ini setting of session.hash_function
, you may need to adjust
the length of the id
column. For example, if session.hash_function=sha256
, you should use
length 64 instead of 40.
Method Details
Ends the current session and store session data.
public void close ( ) |
Session destroy handler.
public boolean destroySession ( $id ) | ||
$id | string | Session ID |
return | boolean | Whether session is destroyed successfully |
---|
Session GC (garbage collection) handler.
public boolean gcSession ( $maxLifetime ) | ||
$maxLifetime | integer | The number of seconds after which data will be seen as 'garbage' and cleaned up. |
return | boolean | Whether session is GCed successfully |
---|
Generates a query to get the session from db
protected yii\db\Query getReadQuery ( $id ) | ||
$id | string | The id of the session |
Initializes the DbSession component.
This method will initialize the $db property to make sure it refers to a valid DB connection.
public void init ( ) | ||
throws | yii\base\InvalidConfigException | if $db is invalid. |
---|
Session open handler.
public boolean openSession ( $savePath, $sessionName ) | ||
$savePath | string | Session save path |
$sessionName | string | Session name |
return | boolean | Whether session is opened successfully |
---|
Session read handler.
public string readSession ( $id ) | ||
$id | string | Session ID |
return | string | The session data |
---|
{@inheritdoc}
public void regenerateID ( $deleteOldSession = false ) | ||
$deleteOldSession |
Method typecasts $fields before passing them to PDO.
Default implementation casts field data
to \PDO::PARAM_LOB
.
You can override this method in case you need special type casting.
protected array typecastFields ( $fields ) | ||
$fields | array | Fields, that will be passed to PDO. Key - name, Value - value |
Session write handler.
public boolean writeSession ( $id, $data ) | ||
$id | string | Session ID |
$data | string | Session data |
return | boolean | Whether session write is successful |
---|