当使用MySQL存储session数据时,使用db查询而不是session会更快吗?

我使用指南将会话请求重定向到数据库调用,以便我可以在前端和后端 PHP 上维护会话(本指南:来自:https://culttt.com/2013/02/04/how-to-save-php -sessions-to-a-database/),但这给我留下了一个问题。


我可以看到会话数据以 JSON 形式存储在数据库中。据我所知,这意味着每次更新 $_SESSION 数据时,都会调用数据库并来回发送整个 $_SESSION var。


通常,我会将内容存储在 $_SESSION 中以减轻对数据库的调用,但是对于数据库会话,这似乎会使情况比正常情况更糟糕。或者仅在读取而不是写入时使用 $_SESSION 仍然相当快/内存?


例如,通常我会得到这样的用户:


function get_user(userID) {

    if ($_SESSION['users'][userID]) return $_SESSION['users'][userID];

    $db = db_connect();

    $db->exec("SELECT * FROM users WHERE userID = ?",[userID]);

    $temp = $_SESSION['users'][userID] = $db->get_row();

    return $temp;

}

重点是,现在每次都进行数据库调用会更快吗?


倚天杖
浏览 100回答 1
1回答

开满天机

如果您只有几千个用户,您不会注意到使用上有太大差异。但是,如果您谈论的是数百万用户,则可能会开始显示不断获取/存储会话数据到数据库表的情况(大约需要额外的半秒,具体取决于您的服务器)。– 不可思议的帽子
打开App,查看更多内容
随时随地看视频慕课网APP