【PHP】会话高级

来源:互联网 发布:知乎收藏文章 编辑:程序博客网 时间:2024/05/15 03:29

symfony把会话ID存在客户端的cookies上.symfony的会话cookies就叫symfony,但是你可以在factories.yml里改变会话的名称.参看6-20
例6-20---在apps/myapp/config/factories.yml里,改变会话的Cookie名称
all:
  storage:
    class:sfSessionStorage
    param:
     session_name: my_cookie_name

TIP会话只有在factories.yml里的auto_start参数设置成true时(这是默认设置)才会开始开启(通过PHP的session_start()函数).如果想手动开始用户会话,关闭会话存储机制里的这个设置就可以了.

symfony的会话是基于PHP会话功能的.这就意味着如果你想用URL参数来代替cookies的话,你只需要在php.ini里修改use_trans_sid的设置.我们不主张用这种方法.

seeeion.use_trans_sid = 1

在服务器方面,symfony把用户会话存在文件系统里面.如果你想把它们存在数据库里,你需要修改factories.yml里的class参数,请参看例6-21

例6-21---修改服务器会话的存储方式,在apps/myapp/config/factories.yml里
all:
  storage:
    class:sfMySQLSessionStorage
    param:
     db_table: SESSION_TABLE_NAME  #存放会话的表的名字
     database: DATABASE_CONNECTION  #使用的数据库连接的名字

现有的会话存储类有sfMySQLSessionStorage,sfPostgreSQLSessionStorage,和sfPDOSessionStorage,建议用最后的这个.database不是必需的配置,它确定数据库的连接方式;symfony会用databases.yml(见第8章)里的配置(主机,数据库名,用户名,密码)去连接数据库.
在sf_timeout秒后,会话将自动期满.这个常量的默认值是30分钟.当然你可以在settings.yml里修改这个常量.请参看例6-22

例6-22---修改会话届期,在apps/myapp/config/settings.yml里
default:
  .settings:
   timeout:  1800   #会话存活的秒数

0 0