簡體   English   中英

用php與mysql數據庫建立多個連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM