2008-10-22 2 views
1

Я читал эту тему некоторое время. Внезапно наступил день, когда это решение является необходимостью, а не просто мечтой.Каков наилучший способ управления сессиями php в кластере LAMP?

В моем чтении я видел популярные различия (файловая, memcached, общая память (мм), таблица sql и пользовательские).

Первоначальная идея, о которой мы думали, заключалась в использовании ZFS или AFS, смонтированных на каждом из серверов приложений (LAMP-боксы), и указывая значение параметра session.save_path php.ini в каталог с установленного пути.

Хотелось бы услышать истории успеха.

ответ

0

Я думаю, что сохранение ваших сессий в базе данных (например, MySQL или PostgreSQL) будет связано с наименьшими головными болями, особенно если у вас уже есть БД для того, что делает ваше приложение.

Memcached также может помочь, поскольку он может хранить данные на нескольких компьютерах, но у меня нет опыта с ним.

0

Я немного предвзятый, но я бы рекомендовал HTTP_Session2. (Я работаю над этим пакетом). Хотя мы поддерживаем традиционную обработку сеанса через файлы, мы также поддерживаем базу данных (MySQL, PostgreSQL, SQlite и т. Д. Через PEAR::MDB2), а также memcached.

Лично мы используем обработчик базы данных, и мы обслуживаем до 100 000 пользователей в день без больших проблем. Я думаю, что оптимизация - я бы пошел дальше, но база данных отлично подходит для промежуточного исправления, которое не требует от вас отката назад. :-)

Кстати, для получения дополнительной информации о memcached, пожалуйста, проверьте мой ответ на How to manage session variables in a web cluster?.

EDIT

Так как вы просили, вот пример (more in the API docs):

$options = array('memcache' => $memcache); 

Где $memcache это экземпляр PECL::Memcache, который необходим. Я знаю, что нам не хватает примера, и мы улучшим это. В то же время наш исходный код имеет довольно хорошую документацию inline, поэтому, например, проверьте API documentation.

+0

Hi Till, Отличное предложение. Я отказываюсь от обработки сеансов sql. Memcached выглядит как лучший способ. Я просмотрел документацию для HTTP_Session2 и заметил, что есть контейнер для memcached, но я не вижу, что требует параметр $ options. Любая помощь? – 2008-10-22 16:26:01

0

Я использую файл на основе сеансов на общих серверах более 5 лет без проблем. У нас есть несколько сессий, которые могут стать довольно большими (> 10 МБ), а работа с файлами очень хорошо. Обычно наши общие серверы хранят файлы сеансов для каждого сайта в каталогах chrooted, поэтому только root может обращаться ко всем их. Мы нашли это очень надежным и не испытывали проблем. Хотя вы потеряли некоторые функции базы данных или memcached, есть причина, по которой это PHP по умолчанию. Ответ

1

Джона Кэмпбелла здесь должен помочь

What is the best way to handle sessions for a PHP site on multiple hosts?

Точки он делает о не только с помощью Memcached важна.

Также, как я уже упоминал в этом вопросе, вы можете рассмотреть кластеризацию сеансов, которая поставляется с платформой Zend, но есть значительные затраты на лицензирование, связанные с этим решением.

0

Если вы ищете решение Memcached для сеансов - возможно, вам стоит зарегистрироваться Repcached. Если уменьшить какие-либо проблемы с потерей сессий, если серверы получают перезагружается и т.д.

о repcached
«repcached» является патч набор, который добавляет функцию репликации данных Memcached 1.2.x.

Примечание: Я на самом деле не пробовал repcached еще, но подумал, что стоит посмотреть в.

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