Налаштування Redis для кешування сесій 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування Redis для кешування сесій 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування Redis для кеширування сесій у 1С-Bitrix

За замовчуванням PHP зберігає сесії у файлах на диску. При високому трафіку або кількох серверах за балансувальником навантаження це створює проблеми: файлова система не масштабується, а сесії користувача повинні потрапляти на один сервер. Redis вирішує обидві проблеми.

Встановлення та базова конфігурація Redis

Встановіть Redis та розширення PHP:

# Ubuntu/Debian
apt install redis-server php-redis

# CentOS/RHEL
yum install redis php-pecl-redis

Базова конфігурація у /etc/redis/redis.conf для сесій:

bind 127.0.0.1
port 6379
maxmemory 256mb
maxmemory-policy allkeys-lru
save ""               # відключити постійність для сесій

Підключення PHP-сесій до Redis

У php.ini або у файлі конфігурації сайту:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?weight=1&timeout=2&prefix=SESS_&database=1"

Параметри save_path: timeout — таймаут підключення в секундах, prefix — префікс ключів для ізоляції від інших даних, database — номер бази даних Redis (0–15).

Для Bitrix сесії керуються через /bitrix/php_interface/dbconn.php або bitrix/.settings.php. Найкращий спосіб — встановити параметри через конфігурацію веб-сервера для конкретного віртуального хоста, а не глобально у php.ini.

Налаштування через .settings.php Bitrix

Bitrix підтримує користувацькі обробники сесій через розділ session у /bitrix/.settings.php:

'session' => [
    'value' => [
        'mode' => 'default',
        'handlers' => [
            'general' => [
                'type' => 'redis',
                'host' => '127.0.0.1',
                'port' => 6379,
                'serializer' => \Redis::SERIALIZER_PHP,
                'database' => 1,
                'ttl' => 86400,
            ],
        ],
    ],
],

Перевірка роботи

// Перевірити, що сесії йдуть у Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->select(1);
$keys = $redis->keys('SESS_*');
echo count($keys) . ' активних сесій';

Також перевіртьте redis-cli monitor — показує операції Redis у реальному часі. При нормальній роботі ви побачите GET SESS_<id> при кожному запиті та SET SESS_<id> при змін сесії.

Важлива особливість: сесії Bitrix

Bitrix зберігає в сесії автентифікацію, кошик (для неавторизованих), токени CSRF. session_write_close() викликається в кінці запиту. Якщо в обробнику є блокування — при високій конкурентності запити користувача можуть вишиковуватися в чергу. У більшості випадків це нормально, але для AJAX-важких сторінок варто викликати session_write_close() відразу після читання даних сесії, якщо подальший запис не потрібен.