我有想要在会话中保留的用户信息。我使用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;
我想知道哪种方法更好。具有多个会话变量会对性能产生任何影响。
答案 0 :(得分:2)
您在问题和评论中提到的这一小数据量对性能的影响几乎不存在。在内部,您将能够通过基准测试来衡量一些非常小的差异,但这不会加快速度。
在这种情况下,我会尝试考虑清洁,可重用和可维护代码对性能的好处。第二个面向对象的方法在我看来更有意义,被认为是最佳实践。
答案 1 :(得分:1)
除了st2erw2od的回答(我完全赞同他),我只想补充一点,这听起来不像会话的好用例。
会话不应包含用户数据的所有用户数据和/或完整对象。它应该只包含必要的数据,例如哪个用户已通过身份验证。然后,应根据特定规则(例如,当需要它们或完整的用户实体等)从数据库(文件系统等)加载诸如他的电子邮件地址,简档图片等的所有其他内容。所以在这种情况下,我建议只在会话中保存用户ID,然后从数据库加载信息。
这样做的主要优点是:a)更清晰(代码更少); b)您的信息始终是最新的并与数据库同步,否则您可能会遇到严重的错误。