За последние 24 часа нас посетили 21684 программиста и 1689 роботов. Сейчас ищут 1997 программистов ...

Оптимизация работы с бд

Тема в разделе "PHP и базы данных", создана пользователем Hemperok, 20 май 2018.

  1. Hemperok

    Hemperok Новичок

    С нами с:
    20 май 2018
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте. Нужен совет по оптимизации запросов к бд.

    Допустим, есть страница на сайте. Выглядит она примерно так.

    HTML:
    1. хтмл/пхп код
    2. Запросы к бд
    3. хтмл/пхп код
    4. Еще запросы к бд
    5. хтмл/пхп код
    6. Еще запросы
    Так же есть код подключения и отключения от бд

    PHP:
    1. public function connect(){
    2.     $this->connection = mysqli_connect($this->db_host, $this->db_user, $this->db_pass, $this->db_name);
    3.     if (! $this->connection) {
    4.        return false;
    5.     }else{
    6.         return true;
    7.     }
    8. }
    9. public function disconnect(){
    10.     if(mysqli_close($this->connection)) {
    11.         return true;
    12.     } else {
    13.         return false;
    14.     }
    15. }

    Как лучше делать на той самой теоретической странице? Подключаться и отключаться от бд при каждом запросе? Чтоб не висели открытые подключения просто так? Или подключаться один раз в начале страницы и отключаться в конце? Или вообще можно не отключаться?
    желательно дать пояснение Вашему ответу - почему именно так и как это влияет на скорость.
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.840
    Симпатии:
    652
    Неправильно выглядит. Нужно так:
    1) запросы к бд;
    2) хтмл/пхп код.
    --- Добавлено ---
    Если прям оч. надо походу дела сформировать разметку, делайте это в памяти (выводите результат выполнения шаблонов в память).

    Иногда допустимо делать повторное подключение, если оно не регулярное, например обновляете кэш и т.п. Но в любом случае все это делается перед выводом «в браузер».
    --- Добавлено ---
    Многие вообще забивают на отключение. Но это «сужает канал». Выбрали все необходимое из БД, закрыли соединение, перешли к обработке данных, выполнению шаблонов. В редких случаях, как выше написал, повторили оба пред. этапа, после чего приступили к выводу «в браузер».
     
    Hemperok нравится это.
  3. Hemperok

    Hemperok Новичок

    С нами с:
    20 май 2018
    Сообщения:
    4
    Симпатии:
    0
    То есть в идеале выносить все запросы в одно место в самом начале. И перед ними ставить подключение, а сразу после них отключение, верно?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.840
    Симпатии:
    652
    Да, примерно так.
     
    Hemperok нравится это.