Несколько подключений к базе данных MySQL с php - PullRequest
1 голос
/ 05 февраля 2010

Допустим, я вызываю несколько функций на данной странице.

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

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

Если я вызову две функции выше на данной странице, не откроет ли это несколько соединений с БД? Я предполагаю, что php автоматически закроет соединение с БД после запуска первой функции, но затем автоматически откроет другое соединение для второй функции. Мой вопрос в том, что если моя страница делает кучу звонков в БД. Это хорошо для памяти, IO, и т.д ...?

Ответы [ 3 ]

1 голос
/ 05 февраля 2010

Почему бы не использовать какую-либо форму пула соединений. Таким образом, пул поддерживает набор соединений, а ваше приложение просто берет соединения из пула и возвращает их. Пул выглядит после открытия и закрытия по мере необходимости (и поддерживает набор открытых соединений).

Этот SO-ответ охватывает больше параметров по сравнению с. PHP и пул соединений.

0 голосов
/ 05 февраля 2010

Попробуйте использовать 1 соединение, если вы подключаетесь к тому же серверу mysql.

$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)

Если у вас более 1 адреса сервера mysql, используйте отдельную ссылкукак $ linkID2

0 голосов
/ 05 февраля 2010

Самый простой способ - установить соединение в начале вашего скрипта. Функции 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...