我以以下方式使用 Zend Session 与 Zend_Auth 和 Session 命名空间:
应用程序.ini
    resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
    resources.session.saveHandler.options.name = "session"
    resources.session.saveHandler.options.primary = "id"
    resources.session.saveHandler.options.modifiedColumn = "modified"
    resources.session.saveHandler.options.dataColumn = "data"
    resources.session.saveHandler.options.lifetimeColumn = "lifetime"
引导程序
     /**
     * Start session 
     */
    public function _initCoreSession() {
        $this->bootstrap('db');
        $this->bootstrap('session');
        Zend_Session::start();
    }
虽然 Zend_Auth 似乎工作正常,但其他会话名称空间似乎表现得很奇怪。
我使用了几个异步请求(使用 jQuery)。
-Init(将数组初始化到会话中)
    $ns = new Zend_Session_Namespace('scanner');
    $ns->unsetAll();
    $ns->pages = array();
-Loop(将东西放入数组,这部分被调用1到n次)
    //Fetch the Session Namespace
    $ns = new Zend_Session_Namespace('scanner');
    //Set scanned page to true
    $ns->pages[$this->getRequest()->getParam('nextUrl')] = true;
-Finalize(处理数组)
    //Fetch the Session Namespace
    $ns = new Zend_Session_Namespace('scanner');
    //Do stuff with $ns->pages
然而,在循环调用的某个地方,pages 变量似乎被重置(因此为空)。
这适用于默认会话行为,但是当我设置 Zend_Session_SaveHandler_DbTable 时它开始失败。
*编辑*
作为对第一个答案的回应(因为它需要一个代码块)
我正在使用 $.post 向我的应用程序发出请求。它向应用程序发送带有数据(URL)的请求,并接收状态更新和下一步请求的 url。这个循环直到它没有收到下一个 url。
使用的 jQuery 代码
    function scanUrl(url)
    {
        $.post("http://www.example.com/scan/scanurl", { nextUrl: url },
       function(data) 
       {
         updateView(data);
         if(data.nextUrl != null)
             scanUrl(data.nextUrl);
         else
             finalize();
       });
    }