3
我想使用Laravel5和Memcached將會話寫入會話。沒有AJAX它工作正常,但我需要存儲多個值異步。爲什麼有些數據沒有存儲在使用memcached的Session中?
這裏是我的例子Javascript代碼:
var i = 1;
for (i; i < 11; i++) {
var data = {
id: i,
data: 'data-' + i
}
$.ajax({
url: 'api/data',
method: 'POST',
data: data
});
}
這裏是我的例子PHP代碼:
post('/api/data', function() {
$request = \Request::all();
\Session::put('key-'.$request['id'], $request['data']);
});
當我火了這個曾經的js代碼,我沒有得到所有10個值致信
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"
]
:會議
這裏的js代碼完成輸出後dd(\Session::all())
如果我多次激發js代碼,我會得到存儲的所有10個值。
你的JS是英朗沒有效率。你正在爲你試圖推送的每個值做一個http調用。最有可能的是你遇到了一個競爭條件:當你檢查會話中的內容時,並不是所有這些多重ajax(實際上只是http)調用都已完成。這可以解釋爲什麼當你檢查後,他們「神奇地」出現 - 他們還沒有到達服務器(或處理),當你去看看他們是否到達了。 – 2015-04-02 15:09:36
我已經記錄了請求的數據。我在日誌中獲得了所有10個值,這意味着所有請求都到達了服務器,或者我錯過了某些東西? – 2015-04-02 15:30:12