Laravel 4存储临时数据

时间:2013-11-22 08:55:50

标签: php session caching laravel-4 temporary-files

我想临时存储一系列将被下一个请求使用的数组。存储的信息包含一些敏感数据,这些数据将用于使用ajax调用在该页面周围导航。页面与页面的数据不同。因此,我只需要临时存储它,以便在用户访问该页面时使用。

首先,我尝试使用缓存:Cache::put($dynamickey, $multiArray, 20);但这会导致文件夹中存在大量“垃圾”缓存,即使它已过期。

所以,我尝试了会话刷新:Session::flash($dynamickey, $multiArray);。当用户仅打开网页的1个选项卡时,此方法有效。但是如果用户打开了这个网站的多个标签,它会中断。

例如: 1.用户在tab1上浏览本网站。 2.然后,用户在tab2上浏览该网站。用户在tab2上浏览网站后,就会删除tab1的会话数据。 3.用户返回并导航tab1内容​​。系统中断,无法正常工作。

如何存储临时数据,这些数据将在不再需要时删除,但也适用于多个标签?

谢谢。

1 个答案:

答案 0 :(得分:3)

因此,在实际设置会话数据的页面上,您需要生成一个动态密钥,您也可以在进行ajax调用时生成该密钥。所以:

Session:put($dynamicKey, $data);

由于服务器不知道您是否打开了多个选项卡,因此只需处理更多请求,我们需要将AJAX请求与标准请求区分开来。这可以通过以下方式实现:

if (Request::ajax())
{
    if (Session::has($dynamicKey)) {
        Session::forget($dynamicKey);
        // Do your application logic
    }
}

因此,在发出ajax请求之前,会话将不会被删除,您可以重新生成该密钥,现在如果您无法从提供的数据中重新生成该密钥,则无法区分两个不同的请求。因此,您需要将这个密钥提供给客户端一些如何将其回显到一些javascript中。

现在,AJAX调用可以利用此密钥并将其发送到请求中,您的服务器可以在其中找到它并找到该选项卡的正确会话

希望你明白这一点。