我正在考虑在 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() 简单得多。此外,根据 cookie 接口的实际会话创建仍然由 PHP 的会话管理负责。
问题:我在正确的轨道上吗?这有意义吗?