Intereting Posts
Неустранимая ошибка: вызов undefined функции ldap_connect () в ubuntu php shared db connection (справка по шаблону проекта) Как удалить определенные поля из всех объектов набора записей в литии? Экранирование запросов SQL в Codeigniter Не удается удалить пробелы из текстового поля Имитировать конструкцию языка php-массива или проанализировать с помощью регулярного выражения? php class html-dom dosen't возвращает весь html как сравнить две таблицы в mysql и php? Значение часового пояса Twitter и время создания_создания (utc time) для расчета того, в какой часовой пояс находится пользователь Каков наилучший способ передать несколько параметров запроса в restful api? Сортировка нескольких таблиц MYSQL DateStamp DatePicker: невозможно установить свойство «currentDay» неопределенного, когда идентификатор нескольких массивов Как задержать? – php-amqplib Получайте товары из интернет-магазина, используя простой парсер и разбиение на страницы Как создать сервер на лазурном и хост-php, сайте mysql на этом

Данные кэша в PHP SESSION или запрос из db каждый раз?

Является ли это «лучше» (более эффективным, быстрым, безопасным и т. Д.) Для данных кеша (A), которые используются при каждой загрузке страницы в массиве $ _SESSION (но все же запрашивает таблицу для флага для перезагрузки данных) или (B) каждый раз загружать его из базы данных?

Я использую метод кеша (A), но я беспокоюсь, что с сотнями пользователей память может стать проблемой? Это просто данные, такие как имя, фамилия, день рождения и т. Д.

С помощью любого метода все еще выполняется запрос. Мысли?

Если ваши данные используются на всех страницах и одинаковы для всех пользователей, я бы не кэшировал их в $ _SESSION (что означает наличие другой копии этих данных для каждого пользователя), но с другим mecanism, например:

  • файл
  • В памяти, например, с APC (если только один сервер)
  • В памяти, например, с memcached (если у вас несколько серверов)
  • Если ваши данные требуют длительных вычислений или нескольких запросов БД, кеширование их в базе данных может быть другой возможностью (будет означать только 1 запрос для возврата назад и меньше вычислений)

Если ваши данные не одинаковы для каждого пользователя (что, по-видимому, имеет место в вашей ситуации, поскольку вы кешируете имена, даты рождения, …) :

  • Я бы удостоверился, что я только кеширую то, что необходимо
  • После того, как у вас будет только несколько данных для кэширования, включение его в сеанс должно быть вполне нормальным
  • Если у вас действительно много пользователей, у вас, вероятно, будут другие проблемы с масштабируемостью, и, скорее всего, вы все равно будете использовать что-то вроде memcached; что означает, что у вас будет другой способ кэширования 😉

В качестве побочного элемента: если вы делаете один и тот же запрос снова и снова, сервер БД должен кэшировать его сам по себе (для MySQL он войдет в « кеш запросов »); так что это было бы не так плохо, как вы думаете, я полагаю, даже если не так оптимизирован ^^

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

Обработчик сеанса PHP по умолчанию – это файлы, но его можно легко изменить на mysql.

Если вы говорите о не-пользовательских данных, просто сохраните их в БД. Беспокойство об оптимизации, если вы столкнетесь с проблемами позже. Обычно гораздо выгоднее использовать лучший дизайн, а затем думать об оптимизации перед рукой. Создайте свой код, чтобы вы могли легко использовать другой обработчик для хранения, и позже у вас не будет проблем с оптимизацией.

Если это специфично для пользователя, используйте сеанс, но при необходимости используйте соответствующий обработчик сеанса.