php会话与mysql速度

php会话与mysql速度,php,mysql,Php,Mysql,我正在研究一个许可系统。在每个页面中,它都需要检查用户是否有这样做的权限。我有两种选择,将数据存储在会话变量中(仅在登录时更新),或者每次查询数据库以获取信息。 哪个更快 我意识到,如果权限发生变化,我将需要更新会话变量,因此用户需要重新登录以“查看”权限的变化,但这不是决定的因素,只有速度才是关键。我将在会话中存储此类信息: 该数据特定于当前用户 每个用户都有自己的数据版本 这种类型的数据不太可能经常更改,这意味着等待会话到期并且用户返回通常是可以的 如果您认为它会经常更改,您可以在会话中

我正在研究一个许可系统。在每个页面中,它都需要检查用户是否有这样做的权限。我有两种选择,将数据存储在会话变量中(仅在登录时更新),或者每次查询数据库以获取信息。 哪个更快


我意识到,如果权限发生变化,我将需要更新会话变量,因此用户需要重新登录以“查看”权限的变化,但这不是决定的因素,只有速度才是关键。

我将在会话中存储此类信息:

  • 该数据特定于当前用户
  • 每个用户都有自己的数据版本
  • 这种类型的数据不太可能经常更改,这意味着等待会话到期并且用户返回通常是可以的
    • 如果您认为它会经常更改,您可以在会话中保留一些时间戳,与数据一起,以跟踪上次从数据库中获取的数据的“时间”;如果它是“很久以前”取的,只需每隔几分钟重复一次


我还想补充一点,如果有一天你开始拥有几个不同的web服务器,你将能够使用memcached存储会话数据——这意味着它的扩展性要比数据库好得多。

简短回答:将它存储在会话变量中可能会快一点,因为你已经从数据库中填充了它。话虽如此,我怀疑单次简单数据库查询的速度是否会以任何真正可测量的方式让您陷入困境。

会话与数据库的速度取决于许多因素:

  • 会话变量中将存储多少数据
  • 会话变量的实际备份存储是什么(如果是数据库支持的会话,则基本上是相同的时间)
我可以看出,对于少量数据,基于文件的会话变量将比数据库访问更快


您需要对其进行测量,以获得应用程序中两种方法之间的相关比较。我个人怀疑,不使用会话解决方案会产生如此大的影响。

会话中设置新值。采取:

时间:0.00062895秒

在数据库中插入相同的值

时间:0.00000811秒

Cookies中插入相同的值

时间:0.00000906秒

或者,您可以使用以下代码进行测试:

$before = microtime(true);
    // Put your code here
$after = microtime(true);
$Speed = number_format(( $after - $before), 8);

echo "<h1>Time:  " . $Speed . " Seconds</h1>";
$before=微时间(true);
//把你的代码放在这里
$after=微时间(真);
$Speed=数字格式($after-$before),8);
回声“时间:”$速度“秒”;

单会话情况下的速度是这里的重要因素,还是需要大量活动会话的速度?当用户以每秒5次的速度发出请求时,我认为这很重要。(快速搜索)数据的大小可能在1kb左右,这会有区别吗?我知道这是一个老问题,但它会对mysql连接时间产生任何影响吗?因为mysql代码需要建立到mysql的连接,而会话则不需要。这会影响性能吗?如果你能提供一些证据,而不是无中生有的理论。因此,每个人都可以从实验本身进行比较。如果这包括获取数据所需的时间和数据的数量,那就太完美了:)