1

使用会话和命名空间时,IO 操作何时真正发生(因为会话作为文件存储在服务器的某处)?

一旦我声明了一个 *Zend_Session_Namespace* 的新实例?

$myNamespace = new Zend_Session_Namespace('myNamespace');

一旦我读取或写入命名空间的变量?

$myNamespace = new Zend_Session_Namespace('myNamespace');
$myNamespace->someVar = 3;
$myVar = $myNamespace->someVar;

我想知道哪个操作真的很昂贵(IO 读/写)。

4

2 回答 2

3

Zend_Session_Namespace使用本机 PHP 会话。
根据官方 PHP 文档:

当 PHP 关闭时(或被session_write_close()调用时),PHP 将在内部对$_SESSION超全局进行编码,并将其与会话 ID 一起传递给 write 回调。写回调完成后,PHP 将在内部调用关闭回调处理程序。

如您所见,会话是在脚本关闭时写入的。

于 2012-07-20T09:49:38.683 回答
2

Zend_Session_Namespace 充当 $_SESSION 的包装器。

$myNamespace = new Zend_Session_Namespace('myNamespace'); //write operation $_SESSION
$myNamespace->someVar = 3;               //write operation on $_SESSION
$myVar = $myNamespace->someVar;                // read operation on $_SESSION

但在所有情况下,读/写 IO 都发生在 RAM 而不是 harddisk 上。当您的应用程序实例结束时,它只会被写入硬盘。

于 2012-07-20T10:39:24.113 回答