Использовать сеансы или запросы БД при проверке каждой страницы? - PullRequest
3 голосов
/ 12 августа 2011

У меня есть приложение, которое должно проверить несколько данных из пользовательской таблицы, чтобы создать страницу.

Не только идентификатор и пароль, но и другие данные, около 7 частей информации на данный момент.

Эта проверка выполняется на каждой странице.

Загружаю ли я все эти данные в сеанс и проверяю их оттуда, или я запускаю запрос при каждом запросе страницы?Излишне говорить, что есть и другие запросы.

Что лучше для оптимизации?

Ответы [ 5 ]

2 голосов
/ 12 августа 2011

Вы должны вызвать данные один раз из базы данных и сохранить их в переменной сеанса.Обычно я помещаю свои user_id, username, email, username & access_levels в сеанс при первом входе пользователя в систему. Затем я могу вызывать их в любом месте приложения, пока пользователь вошел в систему.

Не сохранятьпароль в сеансе, так как он не требуется.

Вы также можете создать переменную с именем logged_in и установить для нее значение true или false для проверки (т. е. показать меню «Учетная запись», если пользователь вошел в систему, иначе покажи меню "Регистрация").
[Обновление]

Вот ссылка на Pro / Con's MySQL кеширования.
Прокрутите вниз до комментария.

Это зависит отна вашем сайте, для кэширования запросов небольшого сайта было бы хорошо, но если вы хотите разрабатывать более масштабируемые приложения, вы должны помнить о скорости.

Как узнать, включен ли кеш запросов MySQL: [ LINK ]

2 голосов
/ 12 августа 2011

MySQL будет кэшировать запрос, если он точно такой же, как и в прошлый раз, поэтому получение информации о пользователе через MySQL - это хорошо.И особенно если вы получаете все через первичный ключ, который очень быстрый.

0 голосов
/ 12 августа 2011

В вашем вопросе используется "проверка" - вы имеете в виду, что вам нужно проверять данные при каждом запросе страницы?Если это так, вы, вероятно, не можете избежать перехода в базу данных.

Если все, что вам нужно, это хранить данные, которые не меняются между страницами для одного и того же пользователя, вам следует использовать сеансы.Не забудьте сначала прочитать официальный документ «PHP - это не Java» на веб-сайте zend.com!

0 голосов
/ 12 августа 2011

Если данные не меняются слишком сильно, вы можете кэшировать их в файл ... или кэшировать в памяти, используя что-то вроде memcache.

Затем вы можете включить их через этот файл и установить некоторые скриншотыо том, когда извлечь из базы данных или просто включить.

0 голосов
/ 12 августа 2011

Поездки в базу данных медленнее, чем доступ к сеансам. Вы обязательно должны использовать сеансы. Только не забывайте, что если эти данные изменились в базе данных, они также должны быть изменены в текущем сеансе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...