会话变量PHP的性能影响


Performance Impact of Session Variables PHP

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

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

$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;

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

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

在这个场景中,我将尝试并考虑干净、可重用和可维护的代码相对于性能的好处。第二种面向对象的方法在我看来更有意义,被认为是最佳实践。

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

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

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