[英]Multiple connections to mysql database with php
假設我在給定頁面上調用了多個函數。
function getProfile {
<mysql code to connect>
...
...
}
function getMatchingUsers {
<mysql code to connect>
...
...
}
如果我在給定頁面上調用上面的兩個函數,那會不會打開與數據庫的多個連接? 我假設php將在第一個函數運行后自動關閉數據庫連接,但是隨后它將為第二個函數自動打開另一個連接。 我的問題是,如果我的頁面對數據庫進行了大量調用,該怎么辦? 這對內存,IO等有用嗎?
為什么不使用某種形式的連接池。 這樣,池將維護一組連接,而您的應用程序僅從池中獲取連接並返回它們。 池將根據需要查看打開和關閉的情況(並維護一組打開的連接)。
這樣的答案涵蓋了更多的選擇。 PHP和連接池。
最簡單的方法是在腳本的開頭進行連接。 mysql函數將使用最后打開的連接來完成其工作,因此不需要在每個函數內部進行連接。
//Start of your file
mysql_connect()
function a(){
// no connect here, just use mysql
mysql_query($sql)
}
function b(){
// no connect here, just use mysql
mysql_query($sql)
}
如果您要連接到同一個mysql服務器,請嘗試使用1個連接。
$host = "localhost";
$user = "user";
$pass = "password";
$database = "dbname";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
請注意,您有一個$ linkID,這就是引用它的用途。 進行特定於連接的查詢,如下所示:
$resultID = mysql_query($query, $linkID) or die("Data not found.");
完成后,關閉該特定連接
mysql_close($linkID)
如果您有多個mysql服務器地址,請使用單獨的引用,例如$ linkID2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.