производительность MySQL для вызовов php

0

У меня есть несколько php-функций для моего кода, и каждая функция пытается установить соединение mysql, отправлять запросы и закрывать соединение mysql. Является ли это хорошей конструкцией или мне нужно установить одно соединение из главной функции, а затем передать переменные каждой из этих функций для выполнения запросов?

Кроме того, возможно ли, что этот код даст ошибки при попытке выполнить второй экземпляр mysql_query в func1()? Не будет ли экземпляр соединения mysql, вызванный в func2, независимым от экземпляра, вызванного func1? В моем коде я, кажется, получаю непоследовательное поведение. Время от времени, я получаю ошибку, но когда я обновляю страницу, кажется, нет проблем. Любые предложения приветствуются. Спасибо.

def func1() {

mysql_connect(params)

mysql_query()

func2()

mysql_query()

mysql_close()

}


def func2() {

mysql_connect(params)

mysql_query()

mysql_close()

}
Теги:
performance

3 ответа

2

Я не могу сказать, что это ужасный удар производительности, но это просто не имеет смысла.
Соединение с базой данных должно быть открыто один раз. Если вам нужно получить 5 яблок из коробки - вы открываете и закрываете эту коробку 5 раз? Или просто откройте его и получите все сразу?;-)
То же самое здесь.

Просто откройте соединение один раз и никогда не закрывайте его. Это будет сделано автоматически.

  • 0
    Я согласен с вами, я просто слишком беспокоился о том, чтобы сохранить мой код модульным и передавать меньше переменных. Кажется необоснованным, хотя, я могу передать другую переменную, конечно.
  • 0
    @ user429113 вы также можете держать его модульным. Есть 2 способа. простой (лично я это предпочитаю): ничего не пропустить. Все функции mysql могут использовать последнее открытое соединение по умолчанию. Не нужно ничего открывать или передавать. Для 99,9% ваших скриптов этого достаточно. Единственный случай, когда вам нужно явно настроить ресурс соединения, это когда вам нужно 2 разных соединения. Это второй вариант, который у вас есть. сохранить ресурс соединения в переменной и передать его (внутренне, конечно, внутри вашего класса базы данных, нет необходимости передавать его при вызове функций где-либо еще)
1

Обычно я использую одно соединение в своих проектах.

//on the beginning of the file I connect to the database
$bdconn = mysql_connect(/* params */);

    //things to do on the page
    {...}
//at the end of the page I disconnect from it
mysql_close($dbconn);

Если вам нужно подключиться к другим базам данных, а также при запуске, вам просто нужно подключиться к другому, но затем просто подключитесь к первому. Я думаю, что не рекомендуется работать с большим количеством баз данных в одно и то же время.

  • 2
    Удален @ из вашего кода, так как это бесполезно и плохо
  • 0
    Я также настоятельно рекомендую отложить создание соединения до тех пор, пока ваш код фактически не будет использовать его, если вас беспокоит производительность. (это тривиально, если вы оборачиваете вызовы mysql_query и используете для соединения статическую переменную)
1

Вы должны использовать singleton для создания или получения уникального соединения MySQL, несколько не рекомендуется, так как вам нужно "называть" каждое соединение и указывать, что вы хотите использовать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню