2013-06-28 56 views
2

我在数据库中创建了两个表,一个用户,另一个用会话。我认为将最后一次活动存储到会话中没有任何问题,但后来我发现会话正在删除,并且我无法存储最后一次活动。因为我希望将最后一个活动存储在某处,所以我需要一个解决方案,如何在大约五分钟时间内将它保存到用户表中 - 与CodeIgniter更改它的会话数据相同。CodeIgniter:将上次活动存储到数据库中

那么,该怎么做?

+0

打开配置中的db_session – Rooster

+0

我已经这样做了,因为所有的会话数据都进入会话表。 – user1257255

+0

你的目标是什么?我知道你想跟踪用户活动,但为什么?跟踪数据是什么?你将如何使用它?你会保留多久?你已经谈到了你的实现,但看到下面的所有评论,似乎我们可以帮助你更多,如果我们了解其基本目标。我之所以这样说,是因为从Murch的评论中,我想知道你是不是以最好的方式去解决这个问题。 – colonelclick

回答

7

忘记会话表,只更新每个请求上的用户表。我会在基础控制器的构造函数中执行此操作,以便它自动运行(如果您不熟悉此操作,请参阅MY_Controller examples)。像这样:

要使用此基本控制器,您将扩展它与您的其他控制器。例如:

class SomeController extends MY_Controller { 

    // MY_Controller constructor runs automatically 

    function index() 
    { 
     // your code 
    } 

} 

您可能能够做到这一点在您最初获取登录用户的用户,而不是同一个地方。

+0

如何检查5分钟的last_activity(所以我可以更新数据库)?这个控制器能够访问核心库,例如会话和模型(或者像在这样的控制器中创建sql查询更好)? – user1257255

+0

@ user1257255将last_activity(time)放入会话变量中。然后根据每次请求检查当前时间的差异。 – Jeemusu

+0

last_activity已经从核心库会话变量中。我需要知道从Wesley放置代码的位置,因为我有更多不同的控制器(有可能用户不会打开主控制器,然后不会存储最后的活动),同时我需要检查值之前和现在的last_activity(所以我可以在数据库中进行更改)。我可以扩展库并将DB信息直接放入其中吗?我可以使用当前模型还是只需要将模型的代码($ this-> db - > ...)放入文件中? – user1257255