session_start()的资源使用情况

时间:2011-09-21 19:11:51

标签: php performance session resources

我使用$ _SESSION来验证用户,但我也考虑在会话中存储其他变量。但是,我不知道会话可以在服务器上使用多少资源。我的意思是在每个页面上都有session_start()是有害的,因为即使不需要会话也会启动会话吗?

每次访问都会开始会议的好坏或中立吗?

2 个答案:

答案 0 :(得分:2)

一般来说,在看到您的网站开始抓取之前,请不要担心优化。

在每个页面上使用session_start()根本没有害处,事实上它是使用身份验证的网站的标准。

答案 1 :(得分:1)

是的,session_start()消耗资源。但是,除非您的网站拥有大量流量,否则您不会注意到。存储会话数据的替代方法几乎都难以实现,并且往往具有有趣的故障模式。

我唯一建议的是要小心你所做的事情 - 即使流量较低,大量数据也会产生明显的影响。经典的错误是意外地将业务逻辑层的整个对象树加载到会话状态中。

例如,假设您正在构建购物车;当客户点击“添加到购物篮”时,您想要记住他们添加的商品。因此,您可以将项目的唯一ID添加到会话中,但是每次显示购物篮时都必须查找价格和说明,这很痛苦。因此,您决定将表示项目的对象加载到会话中。此对象包含价格和描述,但也包含项目的类别 - 以及该类别中的所有其他项目,因为您的应用程序未使用延迟加载。所以现在,购物篮中的每件商品还包含数百或数千个其他物品;在你知道自己的位置之前,你已经将整个数据库加载到会话中了。