質問: session($sesname, null); // カウンタの内容を表示 echo json_encode([$sesname => $cnt]); // ここで処理時間を調整 if($cnt) sleep($delay_sec); // カウンタを増やしてセッションに保存 session([$sesname => $cnt + 1]); } } ``` ### 実際の手順 ブラウザで2つのタブを開き、下記URLを開きます。 > > タブ1. http://localhost/requestSlow > > タブ2. http://localhost/requestFast > > > 上記の時点で、それぞれブラウザには以下が表示されます。 > > タブ1. {"slow":null} > > タブ2. {"fast":null} > > > その後、タブ1を1回リロードし、タブ1のレスポンスが返ってくるまでの10秒間の間にタブ2を10回リロードします。その結果、以下のように表示されます。 > > タブ1. {"slow":1} > > タブ2. {"fast":10} > > > 上記の状態で、再度タブ2のみリロードすると、以下のような表示になります。 > > タブ1. {"slow":1} > > タブ2. {"fast":1} <-----10 が 11 にならず、1 に戻ってしまった! > > > ### 補足情報 セッション管理方法はデフォルトの「file」のままとしています。 storage/framework/sessions 配下にファイルが作成されており、中身も確認しましたが、当然ながら上記の事象と同じようにファイルの中身が戻ってしまっています。 LaravelもPHPも初めてで、セッションの取り扱いがまだ理解できておりません。どなたかお力をお貸しいただけると大変助かります!よろしくお願いいたします。
回答: ``` // ここで処理時間を調整 if($cnt) sleep($delay_sec); // セッションからカウンタを取得 $cnt = session($sesname, null); // カウンタの内容を表示 echo json_encode([$sesname => $cnt]); // カウンタを増やしてセッションに保存 session([$sesname => $cnt + 1]); ``` こうすればよいのでは