我目前正在优化我的PHP脚本。我有一个名为users
的表,其中存储了用户信息,如用户名、电子邮件、密码等。
然后我有这个(在每次页面加载时调用):
if(isset($_SESSION['user']) && is_array($_SESSION['user']))
$userdata=$user->getUser($_SESSION['user']['id']);
(会话在登录时创建)
getUser()
函数简单地看起来像这样:
function getUser ($id)
{
global $dbh;
$stmt = $dbh->prepare("SELECT * FROM users WHERE id=:id");
$stmt->bindParam(':id', $id);
$stmt->execute();
$udata = $stmt->fetch();
if(count($udata) == 0)
return false;
return $udata;
}
虽然我开始看到服务器负载的增加,随着更多的用户注册并开始使用我的网站。根据New Relic的说法,这个特定的函数导致了大量的负载(因为它被访问/加载了很多次)。
我如何以更优化的方式存储(或访问)我的用户数据?
可以访问一些服务器端(DB, Session, Cache等)存储来加载用户详细信息。因此,我认为在这种情况下,您所能做的就是优化存储访问,因为我看不出如何显著改善代码逻辑。
例如,如果查询执行时间很长,您可以将其结果缓存在memcached或redis中。