Symfony2.1 - 反复存储的新会话

时间:2012-09-17 19:15:11

标签: session symfony

我想知道为什么每次刷新我正在编写或正在不同页面之间移动的网站页面都会创建新的会话记录(我将它们存储在数据库中而不是使用标准解决方案)。换句话说,每次单击(我不使用JS / AJAX)都会创建新的记录/新会话。

这是配置文件中的会话配置:

session:
    lifetime:       7200
    domain:  MY_SERVER
    handler_id:     session.handler.pdo

parameters:
  pdo.db_options:
    db_table:    session
    db_id_col:   session_id
    db_data_col: session_value
    db_time_col: session_time

services:
  pdo:
    class: PDO
    arguments:
        dsn:            HOST
        user:           USER
        password:       PSWD

session.handler.pdo:
    class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
    arguments: [@pdo, %pdo.db_options%]

我试图使用:

    auto_start:     false

但是我从Symfony2.1得到以下错误:

    The auto_start setting is deprecated. Just remove it from your configuration file.

那么我应该做些什么来进行正常的会话?

更新我还使用了以下内容:

    arguments:
      - "mysql:host=%database_host%;dbname=%database_name%"
      - %database_user%
      - %database_password%

即整个项目的基本数据库设置(存储在parameters.yml中)。

1 个答案:

答案 0 :(得分:1)

如果您没有将session_id设置为主键,则会发生这种情况。使用(来自文档,MySQL)创建会话表:

CREATE TABLE `session` (
    `session_id` varchar(255) NOT NULL,
    `session_value` text NOT NULL,
    `session_time` int(11) NOT NULL,
    PRIMARY KEY (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

对于其他数据库,请参阅How to use PdoSessionHandler to store Sessions in the Database