DynamoDB Sessions integration
Store your PHP Sessions in DynamoDB.
Install¶
composer require async-aws/dynamo-db-session
Usage¶
use AsyncAws\DynamoDb\DynamoDbClient; use AsyncAws\DynamoDbSession\SessionHandler; $handler = new SessionHandler(new DynamoDbClient(), [ 'table_name' => 'php-sessions', ]); \session_set_save_handler($handler, true);
A DynamoDb table needs to exist in the configured region with the given table_name
option.
The primary key of the table must be a String with key "id". This can be changed with the hash_key
option.
The Time to live attribute of the table must be set on the "expires" attribute. This can be changed with the session_lifetime_attribute
option.
Alternatively, the table can be created programmatically with the setUp method:
$handler->setUp();
Creating the table with the method ensures the settings meet the requirements.
The table is created with On-Demand billing, which you can change to provisioned through the AWS console.
Configuration¶
The SessionHandler accepts the following options:
Parameter | Description | Default |
---|---|---|
consistent_read | Whether or not to use consistent reads | true |
data_attribute | Name of the data attribute in table | "data" |
hash_key | Name of hash key in table | "id" |
session_lifetime | Lifetime of inactive sessions expiration | ini_get('session.gc_maxlifetime') |
session_lifetime_attribute | Name of the session life time attribute in table | "expires" |
table_name | Name of table to store the sessions |
Symfony usage¶
To ease service configuration, install the AsyncAws Symfony Bundle first.
The bundle will automatically configure DynamoDbClient with the given credentials.
# config/services.yaml services: AsyncAws\DynamoDbSession\SessionHandler: arguments: - '@async_aws.client.dynamo_db' - table_name: php-sessions # for more options, see Configuration
# config/packages/framework.yaml framework: session: handler_id: AsyncAws\DynamoDbSession\SessionHandler