需要 Zend_Session_Namespace 的 Yii2 等价物

Need Yii2 Equivalent of Zend_Session_Namespace

我目前正在迁移旧的 Zend 1.1 网站,需要更换 Zend_Session_Namespace。

Yii2 有吗?或者是否有插件或其他东西来添加此功能?

-编辑: 特别是像 Zend 一样设置过期超时和跳数限制的能力。

谢谢。

更新

之前从未提及您在编辑中添加的信息,这使您的问题过于宽泛,您可以为此创建一个单独的问题。

默认情况下,会话数据存储在文件中。该实现将文件从打开会话锁定到它通过 session_write_close()(在 Yii 中可以作为 Yii::$app->session->close() 完成)或在请求结束时关闭的点。当会话文件被锁定时,所有其他试图使用同一会话的请求都被阻止,即等待初始请求释放会话文件。这适用于开发或小型项目。但是当涉及到处理大量并发请求时,最好使用更复杂的存储,例如数据库。


Zend_Session_Namespace 实例提供主要 API 用于在 Zend Framework 中操作会话数据。命名空间用于隔离所有会话数据,如果您将脚本转换为 Yii2 框架,您可能需要查看 https://www.yiiframework.com/doc/api/2.0/yii-web-session

通过示例比较两种功能的简单示例是

Zend Framework 1.1 计算页面浏览量

$defaultNamespace = new Zend_Session_Namespace('Default');

if (isset($defaultNamespace->numberOfPageRequests)) {
    // this will increment for each page load.
    $defaultNamespace->numberOfPageRequests++;
} else {
    $defaultNamespace->numberOfPageRequests = 1; // first time
}

echo "Page requests this session: ",
    $defaultNamespace->numberOfPageRequests;

Yii2 框架计算页面浏览量

public function actionIndex()
{
    $session = new \yii\web\Session();
    $session->open();
    $visits =   $session->get('visits', 0);
    $visits = $visits+1;
    $session->set('visits', $visits);
    return "Total visits $visits"; 
}