0

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

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

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

有没有替代/更好的方法来解决我的问题?

4

1 回答 1

0

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

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

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

于 2017-05-24T20:50:57.313 回答