PHP 登录 - 从数据库获取用户数据或存储在 session 中?

标签 php mysql session

对于我的登录系统,我需要检索一些用户数据,范围从用户名到 session 以及检查用户是否被暂停的“禁止状态”。

我见过一些系统在每次加载时从 users 检索这些数据。我的问题是:这算作对我的服务器造成不必要的压力吗?

或者我应该只将这些数据存储在我的 $_SESSION 中吗?但是它不会更新,我不知道如何检查禁令状态。

谢谢!

最佳答案

检索每个请求的用户信息的单个数据库查询应该没问题 - 它非常快,而且对服务器的影响不大。您总是可以稍后添加缓存(例如 APC 或 memcached),为此您可以告诉缓存每 10 分钟过期一次,或者您需要经常检查用户是否被禁止。但除非您的网站获得大量流量并且您确实注意到性能问题(换句话说,避免使用 premature optimization ),否则我不会为此烦恼。

编辑: 如果用户被禁止状态的更改总是通过您的应用程序发生,而不是直接在数据库中发生,那么您可以设置一些代码以在用户被禁止以清除缓存时运行。这样在禁令生效之前就不会有 10 分钟的延迟(或任何缓存过期时间)。但正如我上面所说,您可能一开始就不需要为缓存而烦恼。

关于PHP 登录 - 从数据库获取用户数据或存储在 session 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26091794/

相关文章:

mysql - MYSQL 自联接是如何工作的?

php - Node.js 和 PHP session 共享

php - 如何使用通配符取消设置 $_SESSION

php - 代码点火器 : create multidimensional array of result

PHP mySQL 在大量插入语句上出现性能问题,我应该使用其他方法吗?

php - preg_replace '/[^0-9]/' 或 '/\D/' 或 '/\d/' 之间的区别?

php - 检测目标写入字段,以便可以备份并可能恢复它们

MySQL:使用 "two halves"方法查找中位数

mysql - 查找唯一的列对

PHP session 在子目录中不起作用并终止现有 session