php什么时候连接到数据库?例如:
$db = new mysqli('host', 'user', 'password', 'database');
mysqli类启动时,是在php连接时,还是仅在调用时:
$stmt->execute();
我想知道我是否写了这样一行代码,php是否会尝试连接,还是会等到 $stmt->execute(); 称为:
$stmt = $db->prepare("SELECT fname, lname WHERE id =?");
rxztt3cl1#
以下是你的剧本细目:
这将在上创建到数据库的新连接 host 使用凭据 user 以及 password 和数据库架构 database . 相比之下
host
user
password
database
$db = new mysqli('p:host', 'user', 'password', 'database');
将尝试重用可用连接池(源)中的现有连接物理tcp套接字将保持活动状态,直到 mysqli->close 调用或脚本终止。您可以通过以下操作确认这是实际行为:
mysqli->close
$db = new mysqli('host', 'user', 'password', 'database'); sleep(1000);
然后跑步 show processlist 在mysql数据库上,确认存在到数据库的物理连接,该连接可能处于活动或休眠状态,但物理链接将在那里,并且端口正在使用中。
show processlist
将向mysql服务器发送一个请求来准备该语句,然后您将获得对已准备语句的引用。请注意,除非使用pdo和仿真prepares,否则准备语句是在数据库服务器上进行的。
将执行先前准备的语句。这种情况在数据库服务器上再次发生,并打开一个结果资源,该资源可用于检索结果。请注意,与pdo不同的是,在mysqli中,语句资源既充当语句,也充当结果,您将使用它来检索结果集(作为流或一次全部)。在同一链接上执行另一条语句之前,需要关闭或以其他方式释放该语句。这就是为什么你可以打电话 $stmt->close() 当你需要的时候。为了关闭连接,您需要运行 $db->close() 或者等待脚本终止。请注意,如果您使用的是持久连接,则物理链接不会关闭,而是会返回到连接池并可供重用。池是必需的,因为并发用户不应该共享同一个物理链接。
$stmt->close()
$db->close()
1条答案
按热度按时间rxztt3cl1#
以下是你的剧本细目:
这将在上创建到数据库的新连接
host
使用凭据user
以及password
和数据库架构database
. 相比之下将尝试重用可用连接池(源)中的现有连接
物理tcp套接字将保持活动状态,直到
mysqli->close
调用或脚本终止。您可以通过以下操作确认这是实际行为:然后跑步
show processlist
在mysql数据库上,确认存在到数据库的物理连接,该连接可能处于活动或休眠状态,但物理链接将在那里,并且端口正在使用中。将向mysql服务器发送一个请求来准备该语句,然后您将获得对已准备语句的引用。请注意,除非使用pdo和仿真prepares,否则准备语句是在数据库服务器上进行的。
将执行先前准备的语句。这种情况在数据库服务器上再次发生,并打开一个结果资源,该资源可用于检索结果。请注意,与pdo不同的是,在mysqli中,语句资源既充当语句,也充当结果,您将使用它来检索结果集(作为流或一次全部)。在同一链接上执行另一条语句之前,需要关闭或以其他方式释放该语句。这就是为什么你可以打电话
$stmt->close()
当你需要的时候。为了关闭连接,您需要运行
$db->close()
或者等待脚本终止。请注意,如果您使用的是持久连接,则物理链接不会关闭,而是会返回到连接池并可供重用。池是必需的,因为并发用户不应该共享同一个物理链接。