Работа с MySQL в PHP

azhirov1991

Если я использую класс для работы с БД, я создаю новый объект этого класса, из которого вызываю функцию для выполнения запроса, я подключаюсь к БД, выполняю запрос, выполняю закрытие подключения. Обрабатываю данные, вывожу на страницу.

По идее - скрипт отработал и исчез.

При повторном запросе с полученной страницы - опять повторять те же самые действия? Или что-то можно сохранить в сессию, чтобы не пересоздавать объект?

Хочется увидеть пример (схему) описанных мною действий в правильном виде.

На разных сайтах пишут по разному, в комментариях много мнений "за" и "против" и не совсем понятно, что из всего правильно, а что нет.

2 ответа

azhirov1991

подключаюсь к БД, выполняю запрос, выполняю закрытие подключения.

Немного не так. подключение происходит строго 1 раз, закрытие вообще не нужно

При повторном запросе с полученной страницы - опять повторять те же самые действия?

Да.

Или что-то можно сохранить в сессию, чтобы не пересоздавать объект?

Нет.

Хочется увидеть пример (схему) описанных мною действий в правильном виде.

  • создаешь объект класса. При этом происходит подключение к БД.
  • выполняешь запрос
  • выполняешь запрос
  • выполняешь запрос
  • обрабатываешь данные, выводишь на страницу


azhirov1991

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

Нужно после отработанного запроса записать сериализованные полученные данные в redis, memcached ну или в файл, с каким нибудь именем и при втором запросе сначала посмотреть в кэше, а потом уже лезть в БД.

  • Спросить кэш, если данные есть в нём и они не устарели, то взять данные из кэша.
  • Если данные не взялись из кэша то подключение к БД, запрос.
  • После запроса сериализация и запись результата в кэш.
  • Закрытие соеденения.

licensed under cc by-sa 3.0 with attribution.