php什么时候连接到数据库?

a0zr77ik  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(296)

php什么时候连接到数据库?例如:

$db = new mysqli('host', 'user', 'password', 'database');

mysqli类启动时,是在php连接时,还是仅在调用时:

$stmt->execute();

我想知道我是否写了这样一行代码,php是否会尝试连接,还是会等到 $stmt->execute(); 称为:

$stmt = $db->prepare("SELECT fname, lname WHERE id =?");
sqyvllje

sqyvllje1#

以下是你的剧本细目:

$db = new mysqli('host', 'user', 'password', 'database');

这将在上创建到数据库的新连接 host 使用凭据 user 以及 password 和数据库架构 database . 相比之下

$db = new mysqli('p:host', 'user', 'password', 'database');

将尝试重用可用连接池(源)中的现有连接
物理tcp套接字将保持活动状态,直到 mysqli->close 调用或脚本终止。您可以通过以下操作确认这是实际行为:

$db = new mysqli('host', 'user', 'password', 'database');
sleep(1000);

然后跑步 show processlist 在mysql数据库上,确认存在到数据库的物理连接,该连接可能处于活动或休眠状态,但物理链接将在那里,并且端口正在使用中。

$stmt = $db->prepare("SELECT fname, lname WHERE id =?");

将向mysql服务器发送一个请求来准备该语句,然后您将获得对已准备语句的引用。请注意,除非使用pdo和仿真prepares,否则准备语句是在数据库服务器上进行的。

$stmt->execute();

将执行先前准备的语句。这种情况在数据库服务器上再次发生,并打开一个结果资源,该资源可用于检索结果。请注意,与pdo不同的是,在mysqli中,语句资源既充当语句,也充当结果,您将使用它来检索结果集(作为流或一次全部)。在同一链接上执行另一条语句之前,需要关闭或以其他方式释放该语句。这就是为什么你可以打电话 $stmt->close() 当你需要的时候。
为了关闭连接,您需要运行 $db->close() 或者等待脚本终止。请注意,如果您使用的是持久连接,则物理链接不会关闭,而是会返回到连接池并可供重用。池是必需的,因为并发用户不应该共享同一个物理链接。

相关问题