Хранение объекта с данными в Сессии.

Beckie

Новичок
Хранение объекта с данными в Сессии.

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

Насколько это актуально с точки зрения производительности и безопасности по отношению к обычному способу(Создание нового объекта/вытаскивание из базы через метод на каждой странице) ?

По идее это должно уменьшить нагрузку на сервер или я не прав и вообще такое делать не стоит ни в коем случае? :rolleyes:
 

tf

крылья рулят
в зависимости от нагрузки это может уменьшить или увеличить нагрузку

обсуждать коня в вакууме не стоит
 

zerkms

TDD infected
Команда форума
По идее это должно уменьшить нагрузку на сервер или я не прав
такие вопросы гораздо проще и правильнее решать опытным путём. потому как больно они контексто-зависимы.
 

Фанат

oncle terrible
Команда форума
ответ очень простой и универсальный:
Любые действия, которые "по идее", делать не стоит.
 

Beckie

Новичок
Допустим ситуация с новостной лентой. Вытащили фото, дата создания, ссылки, автор и т.д. и т.п. из базы прямо в сессию.

На странице выбранной новости делаем простую проверку, существует ли массив или определенные переменные, которые должны содержать данные этой новости, если нет, то вытаскиваем снова и уже не в сессию, а прямиком на страницу.

Лучше ведь избегать лишних запросов к базе данных или я не прав?

Просто хочу кодить так, чтобы уменьшать нагрузку на сервер.
 

zerkms

TDD infected
Команда форума
Beckie
1. у тебя скрипт тормозит?
2. это самое медленное место?
3. ты произвёл измерения вариантов?

-~{}~ 29.08.09 22:04:

Лучше ведь избегать лишних запросов к базе данных или я не прав?
этот запрос у тебя лишний? ненужный?
 

Фанат

oncle terrible
Команда форума
Просто хочу кодить так, чтобы уменьшать нагрузку на сервер.
прекрасное желание.
но реализовывать его надо начинать тогда, когда приходит знание о том, что создает нагрузку на сервер, а что - нет
 

Beckie

Новичок
Автор оригинала: zerkms
3. ты произвёл измерения вариантов?
Нет, не подскажете, чем производить стресс тест? Сильно не пинайте. :rolleyes:

Заранее спасибо. Тогда в будущем буду задавать вопросы, по безопасности того или иного варианта.

Я еще совсем юный падаван. :)
 

zerkms

TDD infected
Команда форума
Beckie
а первые 2 пункта ты зачем опустил? их нужно поочерёдно выполнять.
 

Beckie

Новичок
Ну как он будет тормозить, если я его один запускаю.

Сайт в процессе разработки.

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

Не подскажете зарекомендованный benchmark для php?

Или лучше в ручную создавать циклы скрипта и смотреть на результаты в firebug?
 

A1x

Новичок
Beckie
почему это новостную ленту писать именно в сессию?
новости обычно для всех одинаковы, а сессия у каждого своя.

т.е. нужно что-то вроде общей сессии для всех - а это уже называется кеширование

в любом случае пока
Сайт в процессе разработки.
об этом думать рано. Кеширование можно добавлять по мере необходимости если возникнут проблемы с производительностью
 

AmdY

Пью пиво
Команда форума
Beckie
познакомся с сериализацией, ведь твои объекты будут сериализированы для записи в плоский файл, соответственно востоновится они могут не верно, если имеют ссылки на ресурсы(подключение к дб) и т.д.

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

zerkms

TDD infected
Команда форума
AmdY
пока лучше про нас забыть на месяцок-1.5 :)
 

AmdY

Пью пиво
Команда форума
zerkms
как раз им на RTFM и подтягивание до уровня фреймворка. а лишняя реклама вам не повредит, а то так задолбало править код сверхгибкого ZF, где каждый делает как хочет :(.
 

Beckie

Новичок
PHP:
<b>Notice</b>: Unknown: Skipping numeric key 0. in <b>Unknown</b> on line <b>0</b><br />
Что означает эта ошибка? Впервые такое вижу. Видимо это из-за сессий.
Повторяется столько же раз, сколько строк в вытащенном из базы массиве, то есть что-то "это" где-то в цикле вывода. :rolleyes:


Если потребуется, выложу код.

Заранее спасибо.
 

Beckie

Новичок
Currently $_SESSION acts as an associative array only, so no numeric
keys are allowed.

Вычитал тут...

Поменял на многомерный массив и дал ему название. Ошибки пропали. Кстати он не ругается, если сделать не ассоциативный массив в многомерном. :)

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

-~{}~ 29.08.09 23:40:

If you are using sessions and use session_register() to register objects, these objects are serialized automatically at the end of each PHP page, and are unserialized automatically on each of the following pages.

Во как оказывается...

Почему функцию session_register() удалили из PHP 6 , ктонить знает?
 
Сверху