Как мы можем сделать хранилище сеансов Zend как постоянное среди доступных методов? - PullRequest
1 голос
/ 10 июля 2011

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

По умолчанию Zend_Auth_Adapter_DbTable возвращает идентификатор, предоставленный объекту auth после успешной аутентификации.Если я использую getStorage () или getIdentity (), я могу получить «Значения сеанса (id, name, ..)» для некоторых переменных.!!Если вы считаете, что оба предположения верны, мои вопросы таковы:

  1. Где значения сеансов хранятся по умолчанию?(По умолчанию, какое место он использует для хранения сеанса?)
  2. Если я укажу путь сохранения сеанса, как показано ниже.Зачем нам хранить эти сеансы в папке, если сеанс хранится в соответствии с вопросом 1?save_path = / home / myaccount / zend_sessions / myapp
  3. , если я использую Zend_Session_SaveHandler_DbTable.Что делает его лучше двух вышеуказанных вариантов?
  4. Или, можете ли вы подсказать, каким образом вы думаете, мы можем сделать сеанс постоянным в Zend?В настоящее время у нас зарегистрировано 1 миллион пользователей, так как мы можем сделать хранилище пользовательских сессий эффективным способом?

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

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Я не уверен на 100% в вашем вопросе, но постараюсь ответить: -)

  1. В стандартном Linux-боксе это должен быть / tmp или другой файл, настроенный в php.ini
  2. Подумайте об условиях виртуального хостинга (проблемы безопасности)
  3. Zend_Session_SaveHandler_DbTable хорош, если у вас есть, например, веб-серверы с балансировкой нагрузки, поэтому у пользователя сеанс независим от веб-сервера, к которому он подключен
  4. Если вы используете только один сервер (не общий) и вам не нужны такие функции, как «кто в сети», лучшим решением (на мой взгляд) является обработка сессий по умолчанию в файловой системе.
0 голосов
/ 11 июля 2011
  1. Внутренний сеанс Zend использует глобальную переменную php $ _SESSION, путь, по которому сохраняется сессия, контролируется настройками php.ini, поэтому вы можете использовать session_save_path

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

  3. Сеансы Db используются для совместного использования сеансов.На больших веб-сайтах, таких как Google, один сервер не будет обслуживать все запросы пользователей, поэтому, если вы запросили что-то, сессия будет создана, и вы получите ответ, для вашего следующего запроса нет гарантии, что вы попадете на тот же сервер, в этом случае2-й сервер пытается извлечь данные сеанса из некоторого распределенного местоположения, такого как db или memcache.Memcache - лучший вариант, чем db для распределенного сеанса, так как он более быстрый.

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

...