2012-09-17 2 views
0

내가 쓰고있는 웹 페이지를 새로 고침하거나 다른 페이지간에 이동하면 새로운 세션 레코드가 생성되는 이유가 궁금합니다 (사용하지 않고 DB에 저장하는 이유). 표준 용액). 즉, 클릭 한 번 (JS/AJAX를 사용하지 않고 있음)마다 새 레코드/새 세션이 만들어집니다.Symfony2.1 - 새로운 세션이 이상 계속 저장 됨

여기에 config 파일에서 세션의 내 구성입니다 :

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. 

정상적인 세션을 가지려면 어떻게해야합니까?

UPDATE 나는 또한 다음과 같은 사용 :

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

(parameters.yml에 저장) 전체 프로젝트에 대한 내 기본 데이터베이스 설정.

+0

How to use PdoSessionHandler to store Sessions in the Database이'session.domain' 값이 올바른지 확인을 참조하십시오 (문서, MySQL의에서)를 사용하여 세션 테이블을 만듭니다. – AdrienBrault

+0

감사합니다. Adrien, 실제로 "domain : % database_host %"설정을 사용합니다. 그러나 원격 서버의 정확한 이름을 입력하면 Symfony2.1의 동작은 동일합니다 (새로 고침 또는 페이지 변경 후 데이터베이스의 새 세션 및 새 레코드). 정말 이상 하네. – forsberg

+0

험, PDO없이 세션 처리기로 작동합니까? – AdrienBrault

답변

1

session_id가 기본 키로 설정되지 않은 경우 이런 현상이 발생할 수 있습니다. 다른 데이터베이스의 경우

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; 

관련 문제