为什么有些数据没有使用memcached存储在Session中?

I'm trying to write some data to session using Laravel5 and Memcached. Without ajax it works fine, but i need to store multiple values asynchronously.

here is my example javascript code:

var i = 1;

for (i; i < 11; i++) {
    var data = {
        id: i,
        data: 'data-' + i
    }

    $.ajax({
        url: 'api/data',
        method: 'POST',
        data: data
    });
}

here is my example php code:

post('/api/data', function() {
    $request = \Request::all();

    \Session::put('key-'.$request['id'], $request['data']);
});

When i fire this js code once, i'm not getting all 10 values wrote to session

here is dd(\Session::all()) after js code done output:

array:8 [▼
  "_token" => "WUv8naiJT9PEHpG4b4moZyUcTfxy4YHhdBiluB7R"
  "_previous" => array:1 [▶]
  "flash" => array:2 [▶]
  "key-2" => "data-2"
  "key-5" => "data-5"
  "key-6" => "data-6"
  "key-7" => "data-7"
  "key-9" => "data-9"
]

If i fire js code multiple times, i get all 10 values stored.

$.ajax call are asynchrone.

so some requests are done almost at the same time. That why you have random update data in the session

Depending on which request has session_write last and read...

Here is a timeline with only 2 requests :

request 1 read session request 2 read session request 1 write session request 2 write session

in the session data you have only : key-2 => data-2