所以大多数基本的php / mysql示例都显示了这样的内容(取自W3 Schools作为一个非专业人士的例子):
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");
while($row = mysqli_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
mysqli_close($con);
?>
使用外部连接文件时,关闭连接的正确方法是什么(如果需要的话)。
EG。我们将上面的内容分成一个包含
的connection.php文件 <?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
然后有一个包含以下内容的Query.php文件:
<?php
require('connection.php');
$result = mysqli_query($con,"SELECT * FROM Persons");
while($row = mysqli_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
?>
是否需要关闭连接。如果在query.php文件的末尾有mysqli_close($con);
,或者它是否在connection.php文件的末尾,并且有某种方式来链接query.php文件将在之前运行连接已关闭?
和/或是否正在关闭连接?它是在脚本完成后自动关闭的吗?
答案 0 :(得分:2)
在脚本执行结束时会自动销毁打开的连接(和类似的资源)。但是,您应该在不再需要时立即关闭或释放所有连接,结果集和语句句柄。这将有助于更快地将资源返回到PHP和MySQL。
但是,如果您的PHP脚本需要花费大量时间来执行,那么当您不再需要对数据库发出任何请求时,最好关闭连接 - 至少,如果长时间计算完成之后查询。
如果您的应用程序部署在共享主机上,则尤其如此:您的用户帐户通常只能同时打开几个连接。 (在共享主机上,同时打开的连接数量可能非常小;私有服务器上的连接数通常更大。)
我们经常不关闭联系的原因是:
我认为这可以帮助您解决问题。
答案 1 :(得分:0)
最好使用一个可能扩展Mysqli的类,即:
<?php
// Database class
class Database extends \mysqli
{
public function __construct($host, $user, $pass, $db)
{
//create connection
}
public function __destruct()
{
//close connection
//will call this function when class closes or PHP stops
}
}
//using the database
$db = new Database('localhost', 'user', 'pass', 'db');
$db->query("SELECT ....");