如何使用PdoSessionHandler在数据库中存储会话吗
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.1,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何使用PdoSessionHandler在数据库中存储会话吗
默认Symfony会话存ob娱乐下载储将会话信息写到文件中。大多数大中型网站使用一个数据库来存储会话值而不是文件,因为数据库是易于使用和规模在多个web服务器环境中。
ob娱乐下载Symfony有一个内置的数据库会话存储解决方案PdoSessionHandler。使用它,你只需要改变一些参数在主配置文件:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13
# app / config / config.yml框架:会话:#……handler_id:session.handler.pdo服务:session.handler.pdo:类:ob娱乐下载Symfony \组件\ HttpFoundation \会议\ \ PdoSessionHandler存储\处理程序公众:假参数:- - - - - -“mysql: dbname = mydatabase '- - - - - -{db_username:myuser,db_password:我的密码}
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !- - - - - -- - - - - -app/config/config.xml -->< /span><框架:配置><框架:会话handler-id=“session.handler.pdo”cookie-lifetime=“3600”自动启动=“真正的”/ >< /框架:配置><服务><服务id=“session.handler.pdo”类=“ob娱乐下载Symfony \ HttpFoundation \会议\ \组件存储\处理器\ PdoSessionHandler”公共=“假”><论点>mysql: dbname = mydatabase< /agruement><论点类型=“收集”><论点关键=“db_username”>myuser< /论点><论点关键=“db_password”>我的密码< /论点>< /论点>< /服务>< /服务>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / app / config / config . php/ /……美元容器- >loadFromExtension (“框架”,数组(/ /……“会话”= >数组(/ /……“handler_id”= >“session.handler.pdo”)));美元storageDefinition=新定义(PdoSessionHandler::类,数组(“mysql: dbname = mydatabase ',数组(“db_username”= >“myuser”,“db_password”= >“我的密码”)));美元容器- >setDefinition (“session.handler.pdo”,美元storageDefinition);
配置表和列的名称
这将有会话
与许多不同的表列。表名和列名,可以通过配置第二个数组参数PdoSessionHandler
:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9
# app / config / config.yml服务:#……session.handler.pdo:类:ob娱乐下载Symfony \组件\ HttpFoundation \会议\ \ PdoSessionHandler存储\处理程序公众:假参数:- - - - - -“mysql: dbname = mydatabase '- - - - - -{db_table:会话,db_username:myuser,db_password:我的密码}
1 2 3 4 5 6 7 8 9 10 11
< !- - - - - -- - - - - -app/config/config.xml -->< /span><服务><服务id=“session.handler.pdo”类=“ob娱乐下载Symfony \ HttpFoundation \会议\ \组件存储\处理器\ PdoSessionHandler”公共=“假”><论点>mysql: dbname = mydatabase< /agruement><论点类型=“收集”><论点关键=“db_table”>会话< /论点><论点关键=“db_username”>myuser< /论点><论点关键=“db_password”>我的密码< /论点>< /论点>< /服务>< /服务>
1 2 3 4 5 6 7 8 9 10 11
/ / app / config / config . php使用ob娱乐下载\组件\DependencyInjection\定义;使用ob娱乐下载\组件\HttpFoundation\会话\存储\处理程序\PdoSessionHandler;/ /……美元storageDefinition=新定义(PdoSessionHandler::类,数组(“mysql: dbname = mydatabase ',数组(“db_table”= >“会话”,“db_username”= >“myuser”,“db_password”= >“我的密码”)));美元容器- >setDefinition (“session.handler.pdo”,美元storageDefinition);
这些都是您必须配置参数:
-
db_table
(默认会话
): - 会话表的名称在数据库中;
-
db_id_col
(默认sess_id
): - 在您的会话id列的名称表(VARCHAR (128));
-
db_data_col
(默认sess_data
): - 值列在您的会话表的名称(BLOB);
-
db_time_col
(默认sess_time
): - 时间列在您的会话表的名称(整数);
-
db_lifetime_col
(默认sess_lifetime
): - 一生的名字列在您的会话表(整数)。
分享您的数据库连接信息
用给定的配置、数据库连接设置仅为会话存储连接定义。这是好的当你使用一个单独的数据库会话数据。
但是如果你想将会话数据存储在同一个数据库作为你其他的项目的数据,您可以使用的连接设置parameters.yml
文件通过引用数据库相关参数定义:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
服务:session.handler.pdo:类:ob娱乐下载Symfony \组件\ HttpFoundation \会议\ \ PdoSessionHandler存储\处理程序公众:假参数:- - - - - -“mysql:主机= % database_host %;端口= % database_port %; dbname = % database_name % '- - - - - -{db_username:“% database_user %”,db_password:“% database_password %”}
1 2 3 4 5 6 7
<服务id=“session.handler.pdo”类=“ob娱乐下载Symfony \ HttpFoundation \会议\ \组件存储\处理器\ PdoSessionHandler”公共=“假”><论点>mysql:主机= % database_host %;端口= % database_port %; dbname = % database_name %< /论点><论点类型=“收集”><论点关键=“db_username”>% database_user %< /论点><论点关键=“db_password”>% database_password %< /论点>< /论点>< /服务>
1 2 3 4 5
/ /……美元storageDefi