代码之家  ›  专栏  ›  技术社区  ›  Trevor

需要与zend_session_命名空间等效的yii2

  •  1
  • Trevor  · 技术社区  · 5 年前

    我目前正在迁移一个旧的Zend1.1网站,需要替换ZendU会话\名称空间的使用。

    有一个是为yii2而存在的吗?或者是否有插件或其他东西来添加此功能?

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

    谢谢您。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Muhammad Omer Aslam    5 年前

    更新

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

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


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

    一个简单的例子来比较两种功能

    Zend框架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"; 
    }