我正在使用权限系统。在每个页面中,它将需要检查用户是否具有这样做的权限。我有两个选择,将数据存储在会话变量中(仅在登录期间更新)或每次查询数据库以获取信息。 哪个更快?
我意识到如果权限发生变化,我将需要更新会话变量,因此用户需要重新登录以“查看”权限的变化,但这不是决策中的因素,只有速度是。< / p>
答案 0 :(得分:7)
会话速度与数据库的速度取决于许多因素:
我可以说,对于少量数据,基于文件的会话变量将比DB访问更快。
您需要对其进行测量以获得应用程序中两种方法之间的相关比较。我个人怀疑,如果不采用会话解决方案会产生这样的差异。
答案 1 :(得分:3)
在会话中设置新值:
时间:0.00062895秒
在数据库中插入相同的值:
时间:0.00000811秒
在 Cookie
中插入相同的值时间:0.00000906秒
或者您可以使用以下代码进行测试:
$before = microtime(true);
// Put your code here
$after = microtime(true);
$Speed = number_format(( $after - $before), 8);
echo "<h1>Time: " . $Speed . " Seconds</h1>";
答案 2 :(得分:1)
我会在会话中存储这类信息:
我还要补充一点,如果有一天你开始有几个不同的网络服务器,你将能够使用memcached存储会话数据 - 这意味着它比数据库更好地扩展。
答案 3 :(得分:0)
简短回答:将它存储在会话变量中可能会快一点,因为您已经从数据库中填充了它。话虽如此,我怀疑单个简单数据库查询的速度会以任何真正可衡量的方式使您陷入困境。