PHP/SQL -存储和访问用户数据


PHP/SQL - Storing user data and accessing it

我目前正在优化我的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中。