当使用mysqli时,它是否每次都建立新的连接



假设我使用的是mysqli和纯php。我要写伪代码。

在配置中.php

$msql = new mysqli("username","password","dbname");
$msql->connect();

在app.php 中

include "config.php";
$row = mysqli_select("select * from posts");
foreach($row as $r){
var_dump($r);
}

1( 问题是:每次用户在mywebsite.com/app.php上提出请求或访问网页时,每次创建新的mysql实例并销毁旧实例时?或者根本只有一个mysql实例(到数据库的单个连接(

是的,每次运行脚本时,它都会与数据库建立新的连接,并发出检索数据的新请求。

即使你没有在脚本结束时关闭连接,但mysqli连接在脚本结束后会被破坏,所以你不能"欺骗"它保持打开或以cookie的方式工作。

我的意思是,这就是剧本应该做的。连接到数据库,完成它的工作,离开数据库(连接终止(。

另一方面,如果在同一个脚本中,你有2-3个或更多的查询,那就另当别论了,因为正如我上面提到的,mysqli的连接在脚本结束时终止,这意味着你建立了一个连接,运行所有的脚本查询,然后退出。

编辑回复评论:

让我们假设我进入你的页面,我的一个朋友同时也来了(就像我说的那样(。我连接到你的数据库并请求一些数据,我的一个朋友也是。让我们看看程序:

我们都会触发一个后台脚本为我们每个人运行。在这个脚本中,创建了一个mysqli实例,所以我们现在有两个实例在运行,但只针对两个不同的用户。

这完全有道理,让我详细说明一下:

想象一下你预订假期的页面。如果我想看看法国的票价,而你想看看英国的票价,那么在运行的php脚本中,我们每个人都会有一个where子句,比如:

->where('destination','France');

之后,数据在前端发送,我可以看到我的请求。同时,我的实例已经死了,因为我查询了数据库,得到了结果,没有什么可做的了。

此时将加入的每个用户都会发生同样的情况。他/她将创建他的实例,获得他想要获得的数据,并让他的实例死亡。

最新编辑:

在阅读了你的最新评论后,我第一手就明白了你的问题是什么。因此,正如我在文章中提到的,在mysqli中创建的用户不能与任何其他用户共享。它是独一无二的。

如果你有那么多流量,你能做的就是缓存你的数据。您可以使用专门为此而构建的Reddis数据库,以便进行大量查询,并且您可以为其设置缓存,因此如果您愿意,它会在一段时间后删除数据。

相关内容

最新更新