We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
Хранить сессии в 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.