0

我正在开发一个网站,在登录身份验证后,我正在使用$_SESSION超级全局数组将我的数据传递到其他页面并在需要时显示。我就是这样做的。它是我自己的小 MVC 框架。

//please ignore the syntax errors
$recieved_data = $this->registry->{auth_login}($username, $password);

//$recieved_data holds records like (fname,lname,email,username,password)
$_SESSION = $recieved_data;

//Or should i choose PHP cache instead at this point?

一段时间后,我的网站将拥有巨大的流量。在这种特殊情况下,我应该选择 php 缓存还是继续使用$_SESSION

我知道我不能完全忽略会话的使用,但在我的情况下,正确的选择是什么?

今天,当我$_SESSION在所有项目中设置具有不同索引名称的数组并使用print_r($_SESSION)函数检查$_SESSION Array任何一个项目中的可用会话时,我感到很惊讶。

它向我展示了属于不同项目文件夹的所有活动会话。$_SESSION如果它在所有其他项目中全局可用,或者我的错在某个地方, 这很好吗?

我正在使用 Xampp 1.8.3 和 PHP 版本 5.5.3 和 Netbeans 7.4(候选版本)来编写代码。我会感谢专家的指导。

4

1 回答 1

0

基本规则:不要滥用会话作为缓存!

原因如下:每次发出请求时都会读取会话数据。所有的。每次请求结束时都会写回它。

因此,如果您将一些数据作为缓存写入其中,而不是在每个请求中使用,那么您会不断地读取和写入此请求中不需要的数据。

低数据量不会显着影响性能,但大量数据的序列化、反序列化和磁盘或网络 I/O 会影响性能。而且您错过了使用在多个会话之间共享的数据的机会。

另一方面,缓存不是会话存储,原因很明显:它在所有会话之间共享,并且不能真正包含私有数据。

关于更多流量的优化:您现在无法优化。无论使用模式如何发展,您只会看到真正需要性能的地方。您可能想要扩展——最简单的方法是使用某种云服务进行扩展,而不是将其托管在您自己的硬件上。

于 2013-11-13T08:32:20.987 回答