为啥我们必须在查询命令后关闭 MySQL 数据库?
Posted
技术标签:
【中文标题】为啥我们必须在查询命令后关闭 MySQL 数据库?【英文标题】:Why do we have to close the MySQL database after a query command?为什么我们必须在查询命令后关闭 MySQL 数据库? 【发布时间】:2013-10-22 19:39:33 【问题描述】:我是首发。
我想知道如果我们不关闭 mysql 连接会发生什么。
1- 如果我们不关闭它们,是否可以打开多个数据库?我的意思是我们可以同时打开多个数据库吗?
2- 关闭数据库会提高速度吗?
3- 是关闭数据库还是可选的?
看看这段代码。我不使用“mysql_close()”,所以我不会在每次请求后关闭数据库。这个 php 页面有很多请求。每分钟可能有 50000 个。我想知道这段代码是否需要关闭数据库?
<?php
//Include the file that lets us to connect to the database.
include("database/connection.php");
//Call "connect" function to connect to the database.
connect("database", "localhost", "root", "", "user");
//The GPRS module send a string to this site by GET method. The GPRS user a variable named variable to send the string with.
$received_string = $_GET["variable"];
//Seprates data in an array.
$array_GPRS_data = explode(",", $received_string);
//we need to remove the first letter.
$array_GPRS_data[9] = substr($array_GPRS_data[9], 1);
$array_GPRS_data[13] = substr($array_GPRS_data[13], 4, 2).substr($array_GPRS_data[13], 2, 2).substr($array_GPRS_data[13], 0, 2);
//Query statement.
$query = "INSERT INTO $array_GPRS_data[17](signal_quality, balance, satellite_derived_time, satellite_fix_status, latitude_decimal_degrees,
latitude_hemisphere, longitude_decimal_degrees, longitude_hemisphere, speed, bearing, UTCdate, theChecksum)
VALUES('$array_GPRS_data[0]', '$array_GPRS_data[1]', '$array_GPRS_data[5]', '$array_GPRS_data[6]', '$array_GPRS_data[7]',
'$array_GPRS_data[8]', '$array_GPRS_data[9]', '$array_GPRS_data[10]', '$array_GPRS_data[11]', '$array_GPRS_data[12]', '$array_GPRS_data[13]',
'$array_GPRS_data[16]')";
//Run query.
$result = mysqli_query($query);
//Check if data are inserted in the database correctly.
if($result)
echo("*#01");
else
echo("Error: 001");
echo (mysqli_error());
?>
【问题讨论】:
***.com/questions/880885/… ***.com/questions/336078/… 【参考方案1】:连接到数据库后,无需关闭。由于非持久连接在脚本执行结束时自动关闭。
Follow this for more information
【讨论】:
如果一个脚本打算连续运行数周以建立数十万个连接怎么办? 在这种情况下您可以关闭连接,因为您不会进一步使用。或在需要时重新连接。【参考方案2】:-
是的,您可以有多个数据库连接。您不是在打开数据库,而是在打开数据库连接。数据库始终处于“打开”状态(即运行),一般而言,无论您是否连接到它。
取决于... 如果您在页面上只有一个打开的连接,那么您不需要关闭它,因为它会在 PHP 完成后自动关闭。如果您有很多,那么您可能会使数据库服务器变慢,或者使数据库服务器用尽可用连接(它只能同时打开一定数量的连接)。也就是说,大多数现代数据库服务器可以处理数百个并发连接。
可选,但建议使用。对于中小型项目来说,这并不是什么大问题(即,如果您在任何给定时间有少于 100 个并发访问者,那么您可能无论如何都不会遇到任何问题)。由于每分钟有成千上万的访问者,因此您应该在完成数据库连接后立即主动关闭它,以便尽快释放它。
【讨论】:
以上是关于为啥我们必须在查询命令后关闭 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
linux下已经装了mysql,为啥mysql命令执行时报没有该命令
linux下已经装了mysql,为啥mysql命令执行时报没有该命令