当前,当用户登录我的网站时,将启动一个(PHP)会话,并将他的数据库行保存在他的$_session中。我这样做是因为目前用户数据的大小很小,这样我就不必每次需要时都向数据库询问用户数据。
问题是,当我想在开发过程中添加或更改某些内容并触摸数据库时,会话不会以这种方式更新。用户必须注销并再次登录才能更新会话。这目前很好,因为该网站处于开发阶段,但在生产中这是不可取的。
我不会删除会话文件,因为人们很懒惰,每次数据库中发生更改时,我都会避免强迫他们重新登录,而且我不想每 X 分钟重新加载一次会话。我现在的解决方案是用户表中的布尔列,默认情况下为 false,我在更改数据库时将其设置为 true。每次继续会话时,如果该值变为 true,会话数据将更新。无论如何,这样我必须在每次用户继续会话时执行(小)查询。我不知道这是否会成为生产中的问题。
有没有替代/更好的方法来解决我的问题?
如果我正确理解了这个问题,处理这个问题的一种方法是每次更新数据库中的用户行时,用户的会话数据也可以在 PHP 中更新。
如果不是用户更新记录(例如管理员更改用户的权限),则很可能您希望强制注销用户。如果是用户更新记录(例如更改其用户配置文件中的信息),则只需更新会话变量中的这些值就足够了。
在这两种情况下,您可能还希望向用户提供一条消息,让他们知道发生了什么。