关于在会话中存储用户对象的php性能问题

时间:2011-05-20 03:13:44

标签: php performance

我有一个基于用户的网络应用程序,我正在整理。系统在登录时创建用户对象,然后将其存储在会话数组中。在每个页面加载时,系统根据存储在数据库中的会话密钥验证会话数据,并检查是否有任何与用户相关的数据已更改(用户表中的bool标志)。如果数据已更改,则重新创建用户对象,否则我将使用存储在会话中的用户对象。它看起来像:

session_start();
if (isset($_SESSION['name']))
{
 $flags = get_session_flags($_SESSION['session_key']);
 if (!$flags['valid_session_key'])
 {
  logout();
  redirect_to_home();
 }
 if ($flags['user_data_changed'])
 {
  $user = recreate_user_object();
 }
 else
 {
  $user = $_SESSION['user'];
 }
}

我关心的是php / mysql服务器性能。在页面加载之间存储用户对象可能会遇到哪些问题?我应该总是从数据库中提取数据吗?它包含大量信息,包括存储在用户对象中的几个基于活动的对象。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

系统在。创建用户对象   登录然后将其存储在   会话数组。

什么构成用户对象?您将使用多少User对象?您是否经常需要它提供的所有数据?

  

在每个页面上加载系统验证   针对会话密钥的会话数据   存储在数据库中并检查   查看是否有与用户相关的任何数据   已经改变了(bool flag in the   用户表)。

用户数据的更新频率是多少?如果只在几页上更新,那么检查每个页面加载似乎有点多。上一个问题仍然适用于构建重建User对象的内容。