Хранить его в сеансе или в базе данных запросов каждой загрузки страницы?

Какой путь лучше?

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

Если я должен хранить свой объект во время сеанса, как бы я это сделал? Я пробовал делать это с сериализацией и unserialize, но он не работает для меня …

Спасибо за любую помощь!

EDIT: Вот некоторые из моего кода

Page 1: include "user.php"; session_start(); $user = new user(); $user->$username = "Jason"; $_SESSION["user"] = $user; header("Location: profile.php"); Page 2: include "user.php"; session_start(); $user = new user(); $user = $_SESSION["user"]; echo $user->$username; 

Нет результатов.

Solutions Collecting From Web of "Хранить его в сеансе или в базе данных запросов каждой загрузки страницы?"

Храните данные только в сеансе, который зависит от пользователя. Не используйте сеанс как кеш. Из этого исходят плохие вещи (например, съедение тонны дискового пространства из-за дублирования данных).

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

Если это не зависит от пользователя, используйте слой кеша. Вы можете использовать raw APC / Memcached, или вы можете использовать слой абстракции, такой как Cache_Lite или Zend_Cache …

Я бы сказал :

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

Если вы сохраняете сеанс, вам придется сериализовать / unserialize самостоятельно: это уже сделано сеансами mecanism (обратите внимание, что некоторые типы данных не могут быть сериализованы – см. Сессии ) .

Если вы храните кеш (APC, memcached, files, …) , вам часто потребуется сериализовать / unserialize, потому что эти кэширующие mecanisms не знают, как хранить объекты PHP.