2012-01-26 10 views
1

私はion_authを使用するCodeigniter/PyroCMSを使用しています。不思議なセッション終了バグを追跡する

私は2時間セッションを設定しています。私はdbセッションを使用しています。

n分後にセッションを起動するgremlinがあります。非常にランダムなので、確実に再現することは不可能です。 ハード です。

私はセッションクラス(特にsess_destroy)にログエントリを追加しましたが、これはすでに知っていたセッションが破棄されるだけです。

上記のログエントリにdebug_backtrace()を追加しようとしましたが、それはtehコードでジングすることができませんでした(ログに記録されない/!セッションリダイレクトの前に分割されます)。

これを追跡する適切な方法がありますか?

ありがとうございました。


更新:Session.phpでより多くの私は追加いくつかのログエントリが誤って上書き/削除されるDBセッションをオンにします。ホワイ?

答えて

0

サーバーとresolve.confのマッピングに問題があったようです。

0

セッションクッキーのような音が早すぎると期限切れです。まず、設定ファイルのセッション関連の設定を確認します。つまり$ config ['sess_expiration']の値は7200になります。これは2時間です。

は、その後、私はあなたのコードがUNIXシステム上にある場合、してみてくださいと言うでしょう、そうでなければ私は3600(1時間)にデフォルトを信じて、あなたのphp.ini、

をチェック

grep -Rn 'sess_destroy' . 

あなたが探しているかもしれないもう一つのことは、おそらくNULLsまたは空の値をセッションに書き込もうとしているところです。 sess_destroyをどこにも持っていない可能性がありますが、unset($ _ SESSION)の効果があるかもしれません。

これが役に立ちます。

+0

いくつかの設定の結果として早く期限切れになるのではなく、n回後に一貫して期限が切れます。セッションの有効期限は、設定で2時間に設定されます。 php.iniが正しく設定されています。 – stormdrain

+0

セッションが保存されている/ tmpディレクトリに関連する作業をしているcronジョブを実行していますか?それらのセッションファイルが削除されている場合は、有効期限に関係なく、アクティブなセッションに別れを伝えます。 – Skittles

+0

いいえ。ログに応じて、dbセッションが削除されています(または認証されていない新しいセッションが開始されました)。私は周りを包んで、私の問題のために$ _SESSIONの候補者が見つかりませんでした。また、すべてのsess_destroy()にロギングを追加し、dbセッションが失われたときに呼び出されたが、dbセッションを削除しているものが見つからないことがわかりました。ありがとう。 – stormdrain

1

これは非常に一般的な問題です。私は使用しました(と喜んでお勧めとして) Codeigniter's Native session(下にダウンロードリンクがあります)

しかし、それは古いライブラリですので、いくつかのハッキングをしなければなりませんでした。これらの単純なハックを確認することができますlibrary's forum

このファイルをcodeigniterのライブラリディレクトリにドロップし、問題が解決したかどうかを確認してください。ご意見をお寄せください。

+0

問題は私が使用しているフレームワーク(PyroCMS)はion_authに依存しています。ありがとう。 – stormdrain

+0

@stormdrain私はpyrocmsを使って大きなサイト 'r.gd'を構築しました。そのフレームワークで、私はそれについて話したライブラリを使用しました。あなたはそれを試しましたか?問題は同じで、不安定なセッションでした。 –

+0

興味深い。サイトにpyro管理パネルが組み込まれていましたか?私はそこの機能がion_auth(新規/編集ユーザーなど)と密接に結びついていると思った。再度、感謝します。 – stormdrain