需要与Zend_Session_Namespace相等的Yii2

时间:2019-02-04 22:12:40

标签: zend-framework yii2

我当前正在迁移旧的Zend 1.1网站,并且需要替换Zend_Session_Namespace的使用。

Yii2是否存在一个?还是有插件或添加此功能的东西?

-编辑: 特别是可以像Zend一样设置到期超时和跳数限制。

谢谢。

1 个答案:

答案 0 :(得分:1)

更新

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

默认情况下,会话数据存储在文件中。该实现将文件锁定为无法打开会话,直到被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"; 
}