web-dev-qa-db-ja.com

Joomlaセッションデータが断続的に失われる原因は何ですか?

私の質問は、私が適切に解決したとは思えない古い問題に触発されています。配列情報は、しばらくしてアクセスしたJoomlaセッションに保存していました。設定したJoomla変数が断続的に欠落していることがわかりました。

興味がある場合は、 https://stackoverflow.com/questions/13052495/how-to-prevent-race-conditions-when-writing-reading-joomla-session-variables-fr で私の元の問題を確認できます=

ただし、同じ質問をするつもりはありませんが、代わりに、次の関連する質問に対する回答を得たいと思っていました。

  1. Joomlaセッションデータが断続的に失われる原因は何ですか?
  2. 欠落しているJoomlaセッション変数をトラブルシューティングするにはどうすればよいですか?
1
TryHarder

私が見たものに基づいて、セッションデータが「失われる」いくつかの方法があります。

  1. 最初の方法は、人々がすでに言及または提案したものです。ここで、セッションタイマーの境界に到達します。セッションタイマーに達すると、セッションはメモリからクリアされます。

  2. ログアウトすると、セッションデータは消去されます。どのログアウト関数が呼び出されるか、およびJoomlaのバージョンによって異なります。 Joomlaセッションパーツのみがクリアされる例をいくつか見ました。 $ _SESSIONグローバル全体がクリアされる例も見ました。

  3. また、Joomla APIを介してセッションデータを保存しようとしたが、何も保存されていないか、予期しない場所に保存されている場合もあります。セッション変数を設定したら、セッションをダンプして、それが設定されていることと、それがどこにあるかを確認します。

  4. これは、ランダムな欠落セッションデータの場合に一般的です。これは、www/non-wwwまたはhttp/httpsの境界に達したときです。 Apache(JoomlaサイトのプライマリWebサーバー)は、同じブラウザーがwww/non-wwwまたはhttp/httpsの境界を越えると混乱することがあります。一部のセットアップはそれをうまく処理しますが、他はそうしませんが、それはかなり一般的です。ここが興味深い部分です。リンク先のメインリンクである必要はなく、その橋を渡っています。www/ non-問題を引き起こしている可能性があるwwwまたはhttp/httpsブリッジ。それは最近非常にまれですが、私はそれを複数のサイトで見ました。

これらは、私がこの動作を示すことができると考えることができる唯一の方法です。

2
Donald Champion

もう1つの可能性は、言語文字が原因でセッションデータが切り捨てられることです。データベースに保存する場合は、セッションデータが完全であるかどうかを確認してください(正しく囲まれた{})。

たとえば、セッションがモントリオールを保存しようとすると、モントリオールに切り捨てられる場合があります。 Montrの後のすべてが失われ、セッションデータを更新できます。

1
mwf