2012-09-17 62 views
0

我想知道爲什麼每次刷新頁面的網頁我正在寫或在不同的頁面之間移動,創建新的會話記錄(我將它們存儲在數據庫而不是使用標準解決方案)。換句話說,每次單擊(我沒有使用JS/AJAX)創建新記錄/新會話。Symfony2.1 - 新的會話存儲在一遍又一遍

這是我在配置文件中的會話配置:

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

確保你'session.domain'值是正確的。 – AdrienBrault

+0

感謝Adrien,實際上我使用「domain:%database_host%」設置。但是,當我輸入遠程服務器的確切名稱時,Symfony2.1的行爲是相同的(每次刷新或頁面更改後,數據庫中的新會話和新記錄)。對我來說真的很奇怪。 – forsberg

+0

嗡嗡聲,並沒有PDO作爲會話處理程序工作嗎? – AdrienBrault

回答

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

相關問題