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

ali*_*lik 5 php session

PHP会话逻辑具有两个不同的SessionHandlerInterfaceSessionUpdateTimestampHandlerInterface接口,而SessionUpdateTimestampHandlerInterface接口还没有完全在该文档中描述的.

SessionHandlerInterface::writeSessionUpdateTimestampHandlerInterface::updateTimestamp功能的感觉颇为相似.两者都有相同的参数(会话ID和会话数据)并返回一个bool.

这两个功能有什么区别?

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

如果没有为updateTimestamp函数提供时间戳,代码应该如何更新时间戳?

编辑:我已经创建了一个关于缺少文档PHP错误.

Ste*_*gli 6

这两种方法非常相似,但在不同情况下调用.

1)

SessionHandler没有SessionUpdateTimestampHandlerInterface:

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

SessionHandler SessionUpdateTimestampHandlerInterface:

相同的情况,但现在如果未修改数据集,它将调用SessionUpdateTimestampHandlerInterface::updateTimestamp.优点是,现在您知道不需要再次编写数据集,只需更新现有数据集的生命周期即可.这可以带来巨大的性能提升.

2)

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

3)

时间戳应该与最大生命周期相同,以便在每次请求时"重置"它,就像正常的写操作一样.

目前提到的文件并不好.在此RFC中可以找到一些好的信息.