PHP会话逻辑具有两个不同的SessionHandlerInterface 和SessionUpdateTimestampHandlerInterface接口,而SessionUpdateTimestampHandlerInterface接口还没有完全在该文档中描述的.
该SessionHandlerInterface::write和SessionUpdateTimestampHandlerInterface::updateTimestamp功能的感觉颇为相似.两者都有相同的参数(会话ID和会话数据)并返回一个bool.
这两个功能有什么区别?
应该如何区分实现这两个功能的代码?
如果没有为updateTimestamp函数提供时间戳,代码应该如何更新时间戳?
这两种方法非常相似,但在不同情况下调用.
1)
SessionHandler没有SessionUpdateTimestampHandlerInterface:
登录用户请求页面,并且其所有数据的会话都会被加载.在请求期间,数据集不会被修改,一旦会话关闭,所有数据将再次写入存储(调用SessionHandlerInterface::write).所以你会一遍又一遍地写相同的数据.
SessionHandler SessionUpdateTimestampHandlerInterface:
相同的情况,但现在如果未修改数据集,它将调用SessionUpdateTimestampHandlerInterface::updateTimestamp.优点是,现在您知道不需要再次编写数据集,只需更新现有数据集的生命周期即可.这可以带来巨大的性能提升.
2)
这取决于您存储会话/数据的位置.SessionHandlerInterface::write应该真正写入数据,SessionUpdateTimestampHandlerInterface::updateTimestamp如果可能,应该只更新现有项目的生命周期.Symfony有一些很好的例子.
3)
时间戳应该与最大生命周期相同,以便在每次请求时"重置"它,就像正常的写操作一样.
目前提到的文件并不好.在此RFC中可以找到一些好的信息.
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |