2009-09-06 3 views
0

Я программирую в PHP mysql. Я недавно попал в программирование ООП.Сложные сессии, замедляющие сайт

Так что мне нужно сериализовать мои объекты и сохранить их на СЕССИЯХ. Однако я думаю, что огромные сессии замедляют обновление и загрузку моих веб-страниц.

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

Благодаря Рахул

ответ

1

Сначала вы должны проанализировать, каково фактическое узкое место. Действительно ли это сериализация объекта/десериализация?

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

Но если вам нужны все эти объекты, используйте более удобное место хранения, чем значение по умолчанию (файлы в файловой системе), возможно, память (memcache).

+0

спасибо, где я могу найти настройки для хранения. – Rahul

+0

@Rahul: используйте 'session.save_handler' (http://docs.php.net/manual/en/session.configuration.php#ini.session.save-handler) или функцию' session_save_handler' (http://docs.php.net/manual/en/function.session-set-save-handler.php). – Gumbo

+0

+1 для: сначала вы должны проанализировать, что такое узкое место. – smack0007

1

ли все объекты, хранящие необходимо от загрузки страницы до загрузки страницы? Если нет, вам нужно сохранить эти объекты вне сеанса и восстановить их только на тех страницах, которые вам нужны.

Каждый объект, который вы храните в сеансе, будет сериализован и неэтериализован при каждой загрузке страницы независимо от того, действительно ли вам это нужно. Поэтому вы захотите свести это к минимуму.

Другой вариант - хранить только то, что вам нужно для восстановления объекта в сеансе, а не для всего объекта. Например, вы можете хранить идентификатор базы данных в сеансе и восстанавливать объекты из базы данных, когда они вам понадобятся.

0

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

Пример: Хранить проект для блога статьи

  1. В сессии (со всеми его изображения и т.д.) против
  2. В статье-DB-таблицы (где флаг draft=1).

Поверьте мне, это удобно, если вы выберете БД (и вам не придется хлопотать с сериализацией).

+0

Привет, Есть ли хоть какой-нибудь вид сеанса ... как эхо. У меня нет представления о размерах моих сеансов. спасибо – Rahul

+0

Если вы используете Apache, загляните в свою папку APACHE_ROOT/tmp и найдите файлы с именем sess_ *. В противном случае возьмите скрипт из http://paste-it.net/public/f305f9c/ и передайте ему $ _SESSION. –

+0

paste-it.net вне форума, есть ли у вас альтернативная ссылка на ваш скрипт? – rubo77

Смежные вопросы