何时使用PHP $ _SESSION和Cache或何时不同时使用?

时间:2013-11-10 16:47:18

标签: php session

我正在开发一个网站,在登录验证后,我使用$_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(候选版本)来编写代码。我会感谢专家指导。

1 个答案:

答案 0 :(得分:0)

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

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

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

少量数据不会显着影响性能,但序列化,反序列化以及大量数据的磁盘或网络I / O都会影响它。而且你错过了使用多个会话之间共享的数据的机会。

另一方面,缓存不是会话存储,原因显而易见:它在所有会话之间共享,并且实际上不能包含私有数据。

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