gpt4 book ai didi

php - SessionHandlerInterface::write 和 SessionUpdateTimestampHandlerInterface::updateTimestamp 有什么区别?

转载 作者:可可西里 更新时间:2023-10-31 22:50:24 24 4
gpt4 key购买 nike

PHP session 逻辑有两个不同的 SessionHandlerInterfaceSessionUpdateTimestampHandlerInterface SessionUpdateTimestampHandlerInterface 接口(interface)文档中仍未完整描述接口(interface)。

SessionHandlerInterface::writeSessionUpdateTimestampHandlerInterface::updateTimestamp功能感觉挺像的。两者具有相同的参数( session ID 和 session 数据)并返回 bool 值。

这两个函数有什么区别?

实现这两个功能的代码应该如何区分?

如果没有向 updateTimestamp 提供时间戳,代码应该如何更新时间戳?功能?

编辑:我创建了一个 PHP bug regarding the missing docs .

最佳答案

这两个方法非常相似,只是在不同的情况下被调用。

1)

没有 SessionUpdateTimestampHandlerInterface 的 SessionHandler:

登录用户请求一个页面,并加载其所有数据的 session 。在请求期间,数据集被修改,一旦 session 关闭,所有数据将再次写入存储(调用SessionHandlerInterface::write)。所以你会一遍又一遍地写入相同的数据。

带有 SessionUpdateTimestampHandlerInterface 的 SessionHandler:

相同的场景,但现在如果数据集未被修改,它将调用 SessionUpdateTimestampHandlerInterface::updateTimestamp。优点是现在您知道不需要再次编写数据集,您只需更新现有数据集的生命周期即可。这可能是一个巨大的性能改进。

2)

这取决于您存储 session /数据的位置。 SessionHandlerInterface::write 应该真正写入数据,SessionUpdateTimestampHandlerInterface::updateTimestamp 如果可能应该只更新现有项目的生命周期。 Symfony 有一些不错的 examples .

3)

时间戳应该与最大生命周期相同,以便在每次请求时像正常写入一样“重置”它。

目前提到的文档不好。在这个 RFC 中可以找到一些很好的信息.

关于php - SessionHandlerInterface::write 和 SessionUpdateTimestampHandlerInterface::updateTimestamp 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53647435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com