数据库中的用户表发生了变化,如何更新会话?

时间:2013-09-20 15:40:32

标签: php database session data-consistency

目前,当用户登录我的站点时,会启动一个(PHP)会话,并将他的数据库行保存在他的$ _session中。我这样做是因为用户数据的大小现在很小,这样我每次需要时都不必向数据库询问用户数据。

问题在于,当我想在开发期间添加或更改某些内容并触摸数据库时,会话不会以这种方式更新。用户必须注销并再次登录才能更新会话。现在这很好,因为该网站处于开发阶段,但在生产中这是不可取的。

我不会删除会话文件,因为人们很懒,我会避免在每次数据库发生变化时强制他们重新登录,而且我不想每隔X分钟重新加载会话。我现在的解决方案是用户表中的布尔列,默认为false,我在更改数据库时设置为true。每次会话继续时,如果该值变为真,则会更新会话数据。无论如何,每次用户继续会话时,我都必须进行(小)查询。我不知道这是否会成为生产中的问题。

有没有其他/更好的方法来解决我的问题?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,处理这个问题的一种方法是每次更新数据库中的用户行时,用户的会话数据也可以在PHP中更新。

如果用户不是更新记录(例如管理员更改用户的权限),则很可能会强制注销用户。如果是用户更新记录(例如更改其用户配置文件中的信息),只需在会话变量中更新这些值就足够了。

在这两种情况下,您可能还希望向用户提供一条消息,让他们知道发生了什么。