Хранить сессии в memcache
Хранить сессии в memcache
Здравствуйте. Подскажите, чтобы настроить хранение сессий в memcached достаточно указать
только в файле /etc/php5/apache2/php.ini (ос Debian 8.0) или надо еще где-то прописывать?
В phpinfo вижу в session.save_path в Local Value /home/admin/tmp - значит надо еще где-то прописывать?
Code: Select all
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
В phpinfo вижу в session.save_path в Local Value /home/admin/tmp - значит надо еще где-то прописывать?
Re: Хранить сессии в memcache
Для начала надо сам memcached установить и запустить (не забыв его перестроить на 127.0.0.1, по дефолту он может будет слушать везде - а это печаль с точки зрения безопасности). Ну и вышеозначенные правки в php.ini: session.save_handler - тип хранилища и session.save_path - путь к нему.
Например
Обратить внимание, что синтаксис ТС не правильный, см http://php.net/manual/ru/memcached.sessions.php
Ну и главный вопрос - а зачем? Сколько одновременно открытых сессий, что есть необходимость дергать мемкеш? И самое главное - могут вылезти грабельки, как пример https://habrahabr.ru/post/38261/
Например
Code: Select all
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"
Ну и главный вопрос - а зачем? Сколько одновременно открытых сессий, что есть необходимость дергать мемкеш? И самое главное - могут вылезти грабельки, как пример https://habrahabr.ru/post/38261/
Так если phpinfo перед глазами - там и посмотри, откуда и какой ini читается.значит надо еще где-то прописывать?
Re: Хранить сессии в memcache
Зачем - у меня папка с сессиями забила все свободные inodы, еле смог ее очистить.Stesh wrote:Для начала надо сам memcached установить и запустить (не забыв его перестроить на 127.0.0.1, по дефолту он может будет слушать везде - а это печаль с точки зрения безопасности). Ну и вышеозначенные правки в php.ini: session.save_handler - тип хранилища и session.save_path - путь к нему.
НапримерОбратить внимание, что синтаксис ТС не правильный, см http://php.net/manual/ru/memcached.sessions.phpCode: Select all
session.save_handler = memcache session.save_path = "tcp://localhost:11211"
Ну и главный вопрос - а зачем? Сколько одновременно открытых сессий, что есть необходимость дергать мемкеш? И самое главное - могут вылезти грабельки, как пример https://habrahabr.ru/post/38261/
Так если phpinfo перед глазами - там и посмотри, откуда и какой ini читается.значит надо еще где-то прописывать?
Тут http://php.net/manual/ru/memcached.sessions.php написано
т. е. у меня все правильно, сайт на kohana запустился c memcached, следующий код показывает статистику memcached:you should modify php.ini like that
session.save_handler = memcached
session.save_path = "localhost:11211"
Code: Select all
$memcache = new Memcache;
$memcache->connect('localhost',11211);
print_r($memcache->getStats());
p. s. Исправил еще тут /home/admin/conf/web/apache2.conf наsession_start(): Cannot find save handler 'memcached' - session startup failed
Code: Select all
php_admin_value session.save_path 127.0.0.1:11211
Code: Select all
session.save_handler = memcached
session.save_path = "localhost:11211"
p. s.
Code: Select all
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"
Также тут /usr/local/vesta/data/templates/web/apache2/default.tpl
изменил строку на php_admin_value session.save_path tcp://localhost:11211
чтобы при, например, добавлении зеркал сайту, не сбивались настройки хранения сессий для сайта
Re: Хранить сессии в memcache
Если такое количество сессий, то может их просто по крону тереть?nitsik wrote:Зачем - у меня папка с сессиями забила все свободные inodы, еле смог ее очистить.
Code: Select all
find /home/*/tmp -type f -name 'sess_*' -ctime +5 -delete
Re: Хранить сессии в memcache
Это уже довольно радикальное решение. У php есть свой сборщик мусора.skurudo wrote:Если такое количество сессий, то может их просто по крону тереть?nitsik wrote:Зачем - у меня папка с сессиями забила все свободные inodы, еле смог ее очистить.Code: Select all
find /home/*/tmp -type f -name 'sess_*' -ctime +5 -delete
Проблема: не чистятся сессии, переполняя раздел.
Решение: проверить/добавить в php.ini примерно такое
Code: Select all
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
Re: Хранить сессии в memcache
Есть-то он есть, но от версии к версии его работа прямо скажем так себе. Потому предпочитаю руками. Оно как-то надежнее получается, чем на GC встроенный рассчитывать. Не говорил бы, если бы не наступал на грабли, доверяя вот этой функции (привет пых 5.3, 5.4, 5.5).Stesh wrote:Это уже довольно радикальное решение. У php есть свой сборщик мусора.
Re: Хранить сессии в memcache
Попробовал так, у меня былоStesh wrote: Проблема: не чистятся сессии, переполняя раздел.
Решение: проверить/добавить в php.ini примерно такоеCode: Select all
session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440
Code: Select all
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
Code: Select all
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
Re: Хранить сессии в memcache
А чем, насколько лучше хранить сессии в memcache и в каких случая стоит применять данную конструкцию?
Re: Хранить сессии в memcache
Вот замеры тестов движков. это memcached (основная мысль)one wrote:А чем, насколько лучше хранить сессии в memcache и в каких случая стоит применять данную конструкцию?
memcache vs memcached различия.
Если сильно нагружены движок +сессии, тогда стоит использовать memcache.
Вот еще до кучи полезностей: XCache, opcache, Zend Optimizer, eAccelerator.