看起来,如果此函数返回 false,则会导致错误日志中发出“session_start(): Failed to read session data: user”。这似乎还会产生级联效应,导致不调用 write() 方法。
因此,返回 false 似乎仅用于指示错误状态。为了指示没有现有的会话,但可以创建新的会话,返回空字符串似乎是可行的办法。
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SessionHandlerInterface::read — 读取会话数据
从会话存储中读取会话数据,并返回结果。在会话启动后或调用 session_start() 后立即调用。请注意,在此方法被调用之前,会调用 SessionHandlerInterface::open()。
当会话启动时,PHP 本身会调用此方法。此方法应通过提供的会话 ID 从存储中检索会话数据。此方法返回的字符串必须与最初传递给 SessionHandlerInterface::write() 时的序列化格式相同。如果未找到记录,则返回 false
。
此方法返回的数据将由 PHP 使用在 session.serialize_handler 中指定的反序列化方法在内部解码。结果数据将用于填充 $_SESSION 超全局变量。
请注意,序列化方案与 unserialize() 不同,可以通过 session_decode() 访问。
id
会话 ID。
返回读取数据的编码字符串。如果未读取任何内容,则必须返回 false
。请注意,此值会内部返回给 PHP 以进行处理。