Php ile mysql veritabanına birden fazla bağlantı

3 Cevap

Diyelim ki belirli bir sayfada birden fazla işlevleri çağırmak diyelim.

function getProfile {
    <mysql code to connect>
    ...
    ...
}

function getMatchingUsers {
    <mysql code to connect>
    ...
    ...
}

Ben DB değil açık birden fazla bağlantı olur, belirli bir sayfada yukarıdaki iki işlevi çağırırsanız? Ben ilk fonksiyon çalıştıktan sonra php otomatik olarak DB bağlantısını kapatmak istiyorum, ama o zaman otomatik olarak ikinci işlevi için başka bir bağlantı açmak olacağını varsayıyorum. Benim soru sayfam DB aramaların bir demet yapar ne varsa, olduğunu. Bu .. bellek, IO, vb için iyi mi?

3 Cevap

Basit yolu script başında bağlantısını yapmaktır. Mysql fonksiyonları işlerini yapmak için son açık bağlantısını kullanacak, böylece her fonksiyon içinde bağlamak için gerek yoktur.

//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)
}

Neden bağlantı havuzu çeşit kullanmayın. Bu şekilde havuz bağlantıları bir dizi tutar ve app sadece havuz bağlantıları alarak ve onları dönüyor. Havuz açılış ve gerektiği gibi kapattıktan sonra bakar (ve açık bağlantı bir dizi tutar).

This SO answer daha fazla seçenek wrt kapsar. PHP ve bağlantı havuzu.

Eğer aynı mysql sunucuya conneciting ise 1 bağlantı kullanmayı deneyin.

$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.");

Bir $ linkID var ve size başvurmak için kullanmak ne olduğunu unutmayın. Böyle bir bağlantı belirli bir sorgu yapmak:

$resultID = mysql_query($query, $linkID) or die("Data not found.");

İşiniz bittiğinde, yakın belirli bir bağlantı

mysql_close($linkID)

Eğer 1'den fazla mysql sever adresleri varsa, o zaman $ linkID2 gibi ayrı bir başvuru kullanın