在没有session_set_save_handler()的情况下在PhP中实现数据库驱动的会话管理

时间:2014-03-27 17:53:37

标签: php mysql session session-set-save-handler

我正在考虑在PhP中实现数据库驱动的会话管理,并且已经读取了session_set_save_handler函数,以指定在不同的基于会话的事件上触发的回调。还可以选择实现接口。事实上,如果你谷歌周围有很多信息。我陈述了这一切,因为我的问题不是如何使用session_set_save_handler()来实现数据库驱动的会话管理解决方案,而是如何在不使用它的情况下实现相同的功能。

我想知道为什么要通过session_set_save_handler?中间方法怎么样?只需使用PhP中的会话处理来获取会话ID,然后使用它作为密钥,就可以在会话变量上实现完整的CRUD功能(当然,没有连接到$ _SESSION数组)。例如,在$ _DBSESSION中使用另一个关联数组。会话开始后,获取会话ID并使用此密钥检索DB中的所有行并填充$ _DBSESSION数组,并且当会话要关闭时,将转储此数组,首先删除所有数据后,每个数组索引一条记录到数据库表中具有该会话ID的条目。这种写入数据库功能可以在register_shutdown_function()中,因为它在程序退出时最后完成。无论需要什么样的自定义方法,垃圾清理都可以单独完成。

这样,也可以使用内置的$ _SESSION数组以及$ _DBSESSION方法。这听起来比使用session_set_save_handler()复杂得多。此外,PHP会话管理仍在处理cookie接口方面的实际会话创建。

问题:我是否走在正确的轨道上?这有意义吗?

0 个答案:

没有答案