我不确定为什么该方法需要数据,因为它只更新了时间戳。否则,这不是与“写入”方法相同吗?我认为这很令人困惑,而且手册不幸地没有提供有关整个会话机制的更多信息。
(PHP 7, PHP 8)
SessionUpdateTimestampHandlerInterface::updateTimestamp — 更新时间戳
更新会话的最后修改时间戳。此函数在会话更新时自动执行。
id
会话 ID。
data
会话数据。
我不确定为什么该方法需要数据,因为它只更新了时间戳。否则,这不是与“写入”方法相同吗?我认为这很令人困惑,而且手册不幸地没有提供有关整个会话机制的更多信息。
当 session.lazy_write 启用时,这是默认行为,如果会话数据保持不变,则不会更新会话数据,这样会话处理程序的 WRITE 方法根本不会被调用。
如果您的会话处理程序将会话数据存储到文件中,则 UpdateTimestamp 用于更新会话文件的“最后修改时间”,如果您的会话处理程序将会话数据存储到数据库中,则 UpdateTimestamp 用于更新存储会话注册表最后修改时间的表字段。
“validateId”在“open”之后和“read”之前被调用以验证客户端提供的会话 ID,因为“open”->“validateId”->“read”->“write”->“close”按顺序调用。
如果“validateId”返回 false,则将生成一个新的会话 ID,会话 Cookie 也将在之后更新。