0

Zend Session名前空間にかなりの量のデータを格納していますが、クラスでそれを参照するための最も効率的な方法は何でしょうか。

現在、コンストラクターは、後でなどの行を使用してアクセスを設定して$this->_storage = new Zend_Session_Namespace('products'); います。名前空間内のデータにアクセスする必要がある場合は、$this->_storage->varname = $var;またはを使用してアクセスします。$this->_storage->unsetAll();

これは、セッションの読み取りまたは書き込みを行うたびにディスクアクティビティが発生することを意味しますか?それとも、リクエストの最初に読み取られ、最後に書き込まれますか?

1回のリクエストの間に複数のディスクアクセスがある場合、それを回避する簡単な方法はありますか?

4

1 に答える 1

1

セッションの使用法に関するphpのmanページから

セッションは単純なワークフローに従います。セッションが開始されると、PHPは渡されたIDを使用して(通常はセッションCookieから)既存のセッションを取得するか、セッションが渡されない場合は新しいセッションを作成します。PHPは、セッションの開始後に$_SESSIONスーパーグローバルにセッションデータを入力します。PHPがシャットダウンすると、$ _ SESSIONスーパーグローバルの内容が自動的に取得され、シリアル化され、セッション保存ハンドラーを使用してストレージに送信されます。

したがって、質問に答えるには、セッションの開始時に1回の読み取りがあり、セッションのシャットダウン時に1回の書き込みが行われることを意味します。その間に、$_SESSIONスーパーグローバルは基本的にメモリに保持されます。

于 2013-01-05T21:41:54.347 に答える