Какой путь лучше?
Должен ли я хранить свой объект в сеансе и передавать его со страницы на страницу, или я должен запрашивать базу данных каждый раз, когда пользователь переходит на другую страницу моего веб-приложения?
Если я должен хранить свой объект во время сеанса, как бы я это сделал? Я пробовал делать это с сериализацией и 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;
Нет результатов.
Храните данные только в сеансе, который зависит от пользователя. Не используйте сеанс как кеш. Из этого исходят плохие вещи (например, съедение тонны дискового пространства из-за дублирования данных).
Если он специфичен для пользователя, я бы сохранил его в сеансе, только если он достаточно мал, и если вам это нужно часто (я бы не хранил в сеансе ничего большего, чем 10 кбайт). Если вам это не нужно слишком часто, не храните его.
Если это не зависит от пользователя, используйте слой кеша. Вы можете использовать raw APC / Memcached, или вы можете использовать слой абстракции, такой как Cache_Lite или Zend_Cache …
Я бы сказал :
Если вы сохраняете сеанс, вам придется сериализовать / unserialize самостоятельно: это уже сделано сеансами mecanism (обратите внимание, что некоторые типы данных не могут быть сериализованы – см. Сессии ) .
Если вы храните кеш (APC, memcached, files, …) , вам часто потребуется сериализовать / unserialize, потому что эти кэширующие mecanisms не знают, как хранить объекты PHP.