SessionHandlerInterface::write

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SessionHandlerInterface::write写入会话数据

描述

public SessionHandlerInterface::write(string $id, string $data): bool

将会话数据写入会话存储。由 session_write_close() 调用,当 session_register_shutdown() 失败时,或在正常关闭期间调用。注意: SessionHandlerInterface::close() 在此函数之后立即调用。

当会话准备保存并关闭时,PHP 将调用此方法。它将来自 $_SESSION 超级全局变量的会话数据编码为序列化字符串,并将此字符串与会话 ID 一起传递给此方法以进行存储。使用的序列化方法在 session.serialize_handler 设置中指定。

注意,此方法通常在输出缓冲区关闭后由 PHP 调用,除非由 session_write_close() 显式调用。

参数

id

会话 ID。

data

编码后的会话数据。此数据是 PHP 内部将 $_SESSION 超级全局变量编码为序列化字符串并将其作为此参数传递的结果。请注意,会话使用备用序列化方法。

返回值

返回值(通常在成功时为 true,在失败时为 false)。注意,此值在内部返回给 PHP 以进行处理。

参见

添加注释

用户贡献的注释 3 个注释

jotremb at hotmail dot com
7 年前
需要注意的是,如果从该方法返回 FALSE,PHP 将依次输出以下警告

警告:未知:无法写入会话数据 (用户)。请验证 session.save_path 的当前设置是否正确 (/var/lib/php/session) 在 Unknown 第 0 行。

这可能会导致一些小问题,但是如果会话不应该根据设计写入,那么在处理(而不写入)会话后返回 TRUE 将避免进一步的问题。

总而言之,除了硬错误情况以外,最好始终返回 TRUE。
barkoczi dot roland at aercode dot com
9 年前
注意:如果 $session_data 未更改,则不会调用此函数。为了在每次会话即将关闭时调用此函数,请添加 $_SESSION["timestamp"] = time();
Aeric Poon
5 年前
警告:session_write_close(): 会话回调需要 true/false 返回值在 Unknown 第 0 行

我在 write() 中返回了 TRUE,但警告仍然存在。然后我在 close() 中也返回了 TRUE,警告消失了。
To Top