会话变量的性能影响PHP

时间:2016-04-12 12:55:04

标签: php session

我有想要在会话中保留的用户信息。我使用memcache作为会话保存处理程序。我有两种存储用户信息的方法

$_SESSION['uname'] = 'abx';
$_SESSION['email'] = 'abx@am.com';
$_SESSION['profilepage'] = 'http://t';
$_SESSION['role'] = '1';
$_SESSION['profilepicture'] = 'http://t';
$_SESSION['gender'] = 'M';

OR

$obj = new stdClass();
$obj->uname = 'abx';
$obj->email = 'abx@am.com';
$obj->profilepage = 'http://t';
$obj->role = 1;
$obj->profilepicture = 'http://t';
$obj->gender = 'M';
$_SESSION['user'] = $obj;

我想知道哪种方法更好。具有多个会话变量会对性能产生任何影响。

2 个答案:

答案 0 :(得分:2)

您在问题和评论中提到的这一小数据量对性能的影响几乎不存在。在内部,您将能够通过基准测试来衡量一些非常小的差异,但这不会加快速度。

在这种情况下,我会尝试考虑清洁,可重用和可维护代码对性能的好处。第二个面向对象的方法在我看来更有意义,被认为是最佳实践。

答案 1 :(得分:1)

除了st2erw2od的回答(我完全赞同他),我只想补充一点,这听起来不像会话的好用例。

会话不应包含用户数据的所有用户数据和/或完整对象。它应该只包含必要的数据,例如哪个用户已通过身份验证。然后,应根据特定规则(例如,当需要它们或完整的用户实体等)从数据库(文件系统等)加载诸如他的电子邮件地址,简档图片等的所有其他内容。所以在这种情况下,我建议只在会话中保存用户ID,然后从数据库加载信息。

这样做的主要优点是:a)更清晰(代码更少); b)您的信息始终是最新的并与数据库同步,否则您可能会遇到严重的错误。