看来,如果此函数返回 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 以供处理。