24

Magentoで利用できるさまざまなセッションタイプの違いに関する情報を探しています。

コアセッション、カスタマーセッション、チェックアウトセッションがあります。しかし、どれをいつ使用するのか、どのように動作が異なるのかはよくわかりません。それらはすべて同時に有効ですか、それともチェックアウトセッションはコアセッションよりも早く無効になりますか?

4

1 に答える 1

26

素晴らしい質問です。

質問に直接答えるには:すべてのセッション モデルの有効期間は同じです。セッションの有効期間は、Magento およびサーバー ソフトウェアの構成によって決まります。おそらく、(さまざまなセッションを処理する Magento の方法で) 質問しようとしているのは、「特定のセッション タイプのデータはどのくらい保持されますか?」ということです。

答えは実装の 1 つなので、インスタンス化ポイントのコードを検索するのが最善の方法です。使用する検索パターンはgetSingleton('core/session') (または任意のセッション モデル) です。これが呼び出される場所はどこでも (初めて遭遇した場合)、$_SESSIONスーパーグローバルにセッション名前空間 (以下で説明) が作成されます。

したがって、セッションが「強制終了」されることはありませんが、実装によってはデータがクリアされます。これを行うことで悪名高いのはcheckout/session、注文後にデータが消去されるためです。

これを超えて、永続化のニーズに合わせてセッションが存在することを信頼できます。

Magento のセッション モデルは、抽象基本クラスを使用して、ある種の API を定義しますMage_Core_Model_Session_Abstract。このクラスは、次の役割/機能を果たします。

  1. メソッドを介したセッションの名前空間init()。文字通り、各タイプの保存された値を下に分離します。$_SESSION[$namespace]
  2. セッション関連の構成設定 (Cookie の有効期間、SID、セキュリティ設定などを含む) のゲッター (への接続)。
  3. Flash メッセージの保存と取得 ( addError()addMessage()addNotice()、およびaddSuccess())
  4. セッション ストレージの構成とメソッドのゲッター
  5. を介して自由にパラメーターを設定するためのオーバーロード (魔法のゲッターとセッター) Varien_Object::__call()。*セッションには、セッションからデータを取得し、1 回の呼び出しで設定を解除できるようにする変更されたマジック ゲッターがあることに注意してください (例: $session->getSomeParam(true))

したがって、モジュールに独自のセッション名前空間を持たせたい場合は、セッション抽象から拡張されたセッション モデルを保護された_construct()呼び出しで宣言するだけ$this->init('namespace')です。

セッション モデルのすべてのデータは、セッション名前空間の下の配列キーに設定されます。コアの場合、これは次のようになります。

$session = Mage::getSingleton('core/session')->setSomeValue('Some string');

として表すことができます

$_SESSION['core']['some_value'] = 'Some string'
于 2012-03-21T13:32:30.410 に答える