Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9eb7378

Browse filesBrowse files
committed
Move subguides into main session article
1 parent 1fc62c5 commit 9eb7378
Copy full SHA for 9eb7378

File tree

Expand file treeCollapse file tree

3 files changed

+121
-121
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+121
-121
lines changed

‎_build/redirection_map

Copy file name to clipboardExpand all lines: _build/redirection_map
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@
407407
/security/entity_provider /security/user_provider
408408
/session/avoid_session_start /session
409409
/session/sessions_directory /session
410+
/session/configuring_ttl /session#session-configure-ttl
410411
/frontend/encore/legacy-apps /frontend/encore/legacy-applications
411412
/configuration/external_parameters /configuration/environment_variables
412413
/contributing/code/patches /contributing/code/pull_requests

‎session.rst

Copy file name to clipboardExpand all lines: session.rst
+120Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,6 +1150,126 @@ This is the recommended migration workflow:
11501150
#. After verifying that the sessions in your application are working, switch
11511151
from the migrating handler to the new handler.
11521152

1153+
.. _session-configure-ttl:
1154+
1155+
.. index::
1156+
single: Sessions, defining TTL
1157+
1158+
Configuring the Session TTL
1159+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
1160+
1161+
Symfony by default will use PHP's ini setting ``session.gc_maxlifetime`` as
1162+
session lifetime. When you store sessions in a database, you can also
1163+
configure your own TTL in the framework configuration or even at runtime.
1164+
1165+
.. note::
1166+
1167+
Changing the ini setting is not possible once the session is started so
1168+
if you want to use a different TTL depending on which user is logged
1169+
in, you must do it at runtime using the callback method below.
1170+
1171+
Configure the TTL
1172+
.................
1173+
1174+
You need to pass the TTL in the options array of the session handler you are using:
1175+
1176+
.. configuration-block::
1177+
1178+
.. code-block:: yaml
1179+
1180+
# config/services.yaml
1181+
services:
1182+
# ...
1183+
Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
1184+
arguments:
1185+
- '@Redis'
1186+
- { 'ttl': 600 }
1187+
1188+
.. code-block:: xml
1189+
1190+
<!-- config/services.xml -->
1191+
<services>
1192+
<service id="Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler">
1193+
<argument type="service" id="Redis"/>
1194+
<argument type="collection">
1195+
<argument key="ttl">600</argument>
1196+
</argument>
1197+
</service>
1198+
</services>
1199+
1200+
.. code-block:: php
1201+
1202+
// config/services.php
1203+
use Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler;
1204+
1205+
$services
1206+
->set(RedisSessionHandler::class)
1207+
->args([
1208+
service('Redis'),
1209+
['ttl' => 600],
1210+
]);
1211+
1212+
Configure the TTL Dynamically at Runtime
1213+
........................................
1214+
1215+
If you would like to have a different TTL for different users or sessions
1216+
for whatever reason, this is also possible by passing a callback as the TTL
1217+
value. The callback will be called right before the session is written and
1218+
has to return an integer which will be used as TTL.
1219+
1220+
.. configuration-block::
1221+
1222+
.. code-block:: yaml
1223+
1224+
# config/services.yaml
1225+
services:
1226+
# ...
1227+
Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
1228+
arguments:
1229+
- '@Redis'
1230+
- { 'ttl': !closure '@my.ttl.handler' }
1231+
1232+
my.ttl.handler:
1233+
class: Some\InvokableClass # some class with an __invoke() method
1234+
arguments:
1235+
# Inject whatever dependencies you need to be able to resolve a TTL for the current session
1236+
- '@security'
1237+
1238+
.. code-block:: xml
1239+
1240+
<!-- config/services.xml -->
1241+
<services>
1242+
<service id="Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler">
1243+
<argument type="service" id="Redis"/>
1244+
<argument type="collection">
1245+
<argument key="ttl" type="closure" id="my.ttl.handler"/>
1246+
</argument>
1247+
</service>
1248+
<!-- some class with an __invoke() method -->
1249+
<service id="my.ttl.handler" class="Some\InvokableClass">
1250+
<!-- Inject whatever dependencies you need to be able to resolve a TTL for the current session -->
1251+
<argument type="service" id="security"/>
1252+
</service>
1253+
</services>
1254+
1255+
.. code-block:: php
1256+
1257+
// config/services.php
1258+
use Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler;
1259+
1260+
$services
1261+
->set(RedisSessionHandler::class)
1262+
->args([
1263+
service('Redis'),
1264+
['ttl' => closure(service('my.ttl.handler'))],
1265+
]);
1266+
1267+
$services
1268+
// some class with an __invoke() method
1269+
->set('my.ttl.handler', 'Some\InvokableClass')
1270+
// Inject whatever dependencies you need to be able to resolve a TTL for the current session
1271+
->args([service('security')]);
1272+
11531273
.. index::
11541274
single: Sessions, saving locale
11551275

‎session/configuring_ttl.rst

Copy file name to clipboardExpand all lines: session/configuring_ttl.rst
-121Lines changed: 0 additions & 121 deletions
This file was deleted.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.