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