2016-01-29 9 views
6

Laravel 5.1アプリケーションに奇妙な問題があります。Laravel 5.1ランダムにセッションデータを破棄する

断続的に、セッションデータが破棄されています。私は、この要求のセッションの内容をログファイルに書き込むミドルウェアを書くことでこれを検出しています。セッションID(Session::getId())は変更されませんが、Session::all()で取得されたセッションデータの_tokenの値はになります。

私が言うように、これは断続的に起こります。同じURLを何度もリフレッシュしてから、セッションデータが1回リフレッシュされたときにランダムにランダムに表示され、_tokenの値は以前のリクエストとは異なります。

この原因は何ですか?私はまた、flashオブジェクトが「ドロップされた」セッションデータにないことに気付きました。

以下はログのスニペットです。 session_dataキーの内容は、最後の2行でランダムに「シェイプ」を変更しますが、セッションIDは一定のままです。

また、適切かどうかはわかりませんが、DebugBarが有効になっています。

Screen-shot

UPDATE:デバッグを通して、私はいくつかのページにセッションが(したがって、生成されたばかりの新しい1)無_token、のように、完全にでロードすることを発見しました。何もない。

+0

これがどの程度の頻度で起こるのでしょうか?私はあなたがやっているだけのようにシリアライズされたJSONとしてセッションIDやデータをログに記録するミドルウェアを作成し、DebugBarを可能にすることによって、これを再現しようとしたので、その後、自動秒ごとに更新されますことを視野に入れた経路と呼ばれるためにそのようにそれを残しました約10分。しかし、CSRFトークンを更新したり、セッションデータを削除したりしませんでした。これは 'artisan serve'と' file'セッションドライバで行われたので、あなたの環境に関する詳細を投稿したいかもしれません。 – Bogdan

+0

毎分または2分ごとに発生します。アプリはApacheで動作しています。私はURLをリフレッシュすることができ、いくつかのリフレッシュ後にスクリーンショットごとにランダムにデータを失います。原因を特定するのが難しい、実際のパターンはありません。問題は、アプリケーションコードまたは何か他のものでであれば、少なくとも見に –

+0

私の最初の提案は、私は私の最初のコメントで説明した内容の線に沿ってLaravel何かのクリーンインストールに使用して問題を再現しようとすることですあなたの設定。 – Bogdan

答えて

0

Linuxを使用している場合は、laravelのセッション/キャッシュマネージャとしてRedis(http://redis.io)を使用してみてください。私はいくつかのサーバーでテキスト/クッキーとlaravelで過去にいくつかの問題を抱えていました。私がレディスを養子にしたとき、私はもう問題はなかった。

さらに詳しい情報:https://laravel.com/docs/5.1/redis

+0

おかげで、しかし、代替ドライバーが本当に問題を解決していません。私たちのステージング環境はファイルドライバを使用しており、これが問題の発生場所です。 –

+0

データベースドライバを試してみませんか?代わりにデータベーステーブルに保持されますが、おそらく動作します。 https://laravel.com/docs/5.1/session –

2
  1. ファイルドライバを使用している場合は、同時要求の競合状態に実行することができます。その後、ファイルは切り捨てられ、Laravelはそれを読み取ることができないため、セッションをリフレッシュします。レースの条件は、あなたがセッションに入れているものが置かれないという症状につながることもあります。これはランダムな傾向がありますので、デバッグするのは非常に難しいです。 Laravelチームによると、これはファイルドライバの既知の制限であり、固定されているようには見えないため、別のドライバを使用することをお勧めします。これにより、ランダムセッションのリフレッシュの問題が解決されますが、追加されないセッションに変更を加える可能性があります。私が知る限り、Laravel 5.1のこの時点で、あなたはそれを自分で管理する必要があります。

  2. どういうわけか、セッションデータが長すぎて切り捨てられています。あなたは(他のドライバーをテストしていない)データベースドライバを使用している、とあなたが長いフィールド長よりのセッションデータを保存しようとすると、後続の要求は、このセッションからプルすることはできません、あなたは風よ新しいセッションで非常に短いセッションデータでこの問題がランダムに発生している場合は、おそらく上記の原因です。

関連する問題