使用数据库存储会话时,会话cookie参数

时间:2016-01-07 12:38:51

标签: php session cookies

我很难找到有关PHP的session_set_cookie_params()影响存储在数据库中的会话的信息。搜索过SO和谷歌并参考了手册,但没有运气。

1)此功能的使用方式是否与使用会话的默认文件存储时完全相同?

2)然后是一个更通用的会话问题(基于文件的方法) - 当会话到期时,是从文件系统中删除,还是使用自动“垃圾收集”进行,其中的概率设置为的php.ini?

3)使用数据库存储会话数据时,第一个参数(会话生存期)如何处理?因为没有自定义函数/方法,无法从数据库中删除。或者会话是否以与文件方法相同的方式到期,但是垃圾收集需要使用自定义函数来处理?

我现在正在使用以下文章作为目标;

How to save PHP sessions to a database

提前致谢。

1 个答案:

答案 0 :(得分:2)

1)此函数配置php发送给客户端的cookie,使其按预期工作。 session_set_cookie_params()函数仅适用于您使用默认的PHP会话实现,该实现将会话数据存储在由session.save_path

定义的文件夹中的磁盘上

2)当使用php的会话实现时,垃圾收集会根据session.gb_* ini设置自动进行。每次启动会话时,都有可能运行垃圾收集器,这将清除过期会话中的所有数据。

3)如果您为会话使用数据库存储,则需要实现自己的垃圾收集例程。您可以使用概率ini设置来确定何时运行垃圾收集(请参阅gb_probability和gb_divisor)。在大多数情况下,在开始会话后立即执行垃圾收集。那时你应该看看它是否应该运行,如果它运行查询你的数据库并删除所有陈旧的记录。这假设您还将过期数据与您的记录一起存储,以便您可以实际评估记录是否过时。

话虽如此,不要重新发明轮子并使用已经实现自定义保存处理程序的众多会话库中的一个。