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();
・ループ(配列に入れる、この部分を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
ただし、ページ変数をループする呼び出しのどこかでリセットされているようです (したがって、null)。
これはデフォルトのセッション動作では機能しますが、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();
});
}