由于CDbHttpSession ,您不必为会话表创建模型relies on PDO to access database
。
您的会话组件的配置是什么?
您指定会话 ID 并通过调用open()方法手动启动会话。此方法使用 PHP 的session_set_save_handler函数设置会话回调方法。readSession($id)是其中之一,根据手册页:session_set_save_handler
当会话开始或调用 session_start() 时,PHP 会在内部调用此回调。
由于session_start creates a session or resumes the current one
您必须在设置会话标识符之前授予该会话不会自动启动。Yii 的会话实例的autoStart属性对此负责,并且必须设置为false
(默认为true
)。
还必须指定用于检索会话数据的数据库连接的标识符 connectionID 。这很重要,否则:
如果未设置,将自动创建和使用 SQLite 数据库。
牢记这一切,我想您的会话组件的配置必须如下所示:
'session' => array(
'class' => 'CDbHttpSession',
'autoStart' => false,
'connectionID' => 'db',
'sessionTableName' => 'your_session_table_name',
'autoCreateSessionTable' => false // for performance reasons
)