Должен ли я создавать новые объекты при каждой загрузке страницы или передавать их страницу на страницу в PHP? - PullRequest
1 голос
/ 01 февраля 2010

С PHP и MySQL я работаю на сайте типа входа пользователя. Вот мой план до сих пор.

Пользователь входит в систему с помощью электронной почты / пароля. Затем я устанавливаю несколько вещей в сеанс (UserID, photoURL, userName, широта, долгота, пол). Это основные элементы, которые будут сохранены в сеансе и, возможно, APC / Memcache, когда пользователь "вошел в систему".

Моя обработка сеанса и обработка кэша заключены в классы, поэтому существует пользовательский объект, который получает данные для каждой загрузки страницы, создавая также сеанс и объект кэша, а затем импортируя эти объекты в основной объект пользователя.

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

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

я думаю, тебе не нужно об этом думать. Я работаю разработчиком php в моей компании, где у нас есть веб-страница с буквально сотнями объектов, создаваемых каждый раз при загрузке страницы, и она обслуживает страницы для 50-200 человек одновременно, и для создания страницы требуется всего около 50 мс. Поэтому, если вам действительно не нужна дополнительная скорость, получаемая от сериализации объектов, вам не нужно об этом беспокоиться.

1 голос
/ 01 февраля 2010

Звучит как преждевременная оптимизация.

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

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

Обратите внимание, что объект сеанса прозрачно сериализует и десериализует все его содержимое - опять же вы можете получить некоторую выгоду, если хорошо использовать методы __sleep и __wakeup.

НТН

С

1 голос
/ 01 февраля 2010

Я не думаю, что способ «все в сеансе» - это лучший способ, это всего лишь другой способ. Если вы храните сериализованные объекты в сеансе, а затем десериализуете их, это, безусловно, будет быстрее, но вы должны хранить большой объем данных. Лично я предпочитаю регенерацию объекта при каждой загрузке страницы и использую сериализацию сеанса, только когда создание объекта очень медленное.

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