2013-10-15 39 views
4

我是首發。爲什麼我們必須在查詢命令後關閉MySQL數據庫?

我想知道如果我們不關閉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()); 
} 
?> 
+0

http://stackoverflow.com/questions/880885/is-closing-the-mysql-connection-important – CIRCLE

+0

http://stackoverflow.com/questions/336078/ph​​p-mysql-when-是最好的時間從數據庫中斷開 – CIRCLE

回答

11
  1. 是的,你可以有多個數據庫連接。您不打開數據庫,您正在打開數據庫連接。無論您是否連接到數據庫,數據庫一直都處於「打開」(即運行)狀態。
  2. 取決於...如果您只在頁面上有一個打開的連接,則不需要關閉它,因爲它在PHP完成時會自動關閉。如果您有很多,則可能會使數據庫服務器變慢,或使數據庫服務器的可用連接耗盡(它只能同時打開一定數量的連接)。也就是說,大多數現代數據庫服務器可以處理數百個併發連接。
  3. 可選,但建議使用。對於中小型項目來說這不是什麼大問題(即,如果您在任何特定時間只有不到100個併發訪問者,那麼您不會有任何問題)。由於您每分鐘有數千名訪問者,因此您應儘快關閉數據庫連接,儘快將其釋放。
3

一旦連接到數據庫就沒有必要關閉。由於非持久連接在腳本執行結束時自動關閉。

Follow this for more information

+0

如果一個腳本的目的是爲了運行數週甚至幾十萬次的連接? –

+0

在這種情況下,您可以關閉連接,因爲您不打算繼續使用。或者在需要時重新連接。 –

相關問題