Кто-нибудь хранил сессии в memcached?

grisha2217

Проверенные
Сообщения
913
Решения
6
Реакции
1,390
Баллы
5,715
Всем привет, наткнулся на интересную статью на хайлоаде
Там есть пункт про хранении сессий, где говорится, что лучше бы хранить сессии в memcached - это снизит нагрузку на диск , уберет блокировки с сессий, достаточно изменить конфиг php

PHP:
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"

По дефолту в session.save_handler стоит files. Так как memcached я использую давно в связке с xenforo (это дает высокий прирост производительности), я решил поставить кеширование сессий через memcached, прироста скорости я не заметил (по ощущениям, а не по замерам), я думаю, это вообще не влияет на производительность xenforo, так как в конфиге движка есть пункт:
$config['cache']['cacheSessions'] = true;
Как ксенфоро кеширует сессии? Если в memcached, то я не увидел там примерно такого кода:
Код:
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', 'tcp://localhost:11211');

Кто что скажет?
 
По дефолту в session.save_handler стоит files
Правильно и тогда php пишет сессии в session.save_path в виде одиночных файлов. С небольшим числом сессий это не представляет проблем, так как файлы вполне сносно кешируются средствами самой файловой системы. Печаль наступает, когда у нас хотя бы 20к-50к-200к сесиий и более. тогда хранить сессии в файлах становится дорого. Поэтому тогда переводят в какое нибудь memory-хранилище.

Как ксенфоро кеширует сессии?
Это надо (для XF 1.5.x)

то я не увидел там примерно такого кода:
И не будет, потому что настройки вынесены в config.php

Еще по теме - там как раз расписано, почему нельзя тыкать мемкеш налево и направо.

статью на хайлоаде
Сайтег вредных советов.
 
Последнее редактирование:
Это надо (для XF 1.5.x)
получается, что xenforo использует базу данных для хранения сессий, а не memcached или стандартный массив $_SESSION?

И не будет, потому что настройки вынесены в config.php
Я имел ввиду в самом движке, например так:
Код:
if (XenForo_Application::get('config')->cache->cacheSessions)
            {
               
                ini_set('session.save_handler', XenForo_Application::get('config')->cache->backend);
                ini_set('session.save_path', XenForo_Application::get('config')->cache->backendOptions->servers);

                //$cache = XenForo_Application::getCache();
            }
 
получается, что xenforo использует базу данных для хранения сессий, а не memcached или стандартный массив $_SESSION?
Не уверен что в базе именно чистая сессионная переменная, а так все верно - xf пишет и работает с сессией с базы, кеширование пихает ее к себе, в более быстрое и дешевое хранилище, ну и на выхлопе минус 1 запрос к базе (речь только про сессию). Тут у нас просто разные сущности, session.save_handler - это просто выбор обработчика для хранения сессионной переменной, это низкоуровневое по сути, это не кеш. Это надо дергать, когда упираются в хранение сессий (когда их дофига, например). А вот $config['cache'] - это уже само кеширование на уровне фреймворка, по возможности включаем всегда и от него профит более заметен.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу