Просмотров: 10454
Дата последнего изменения: 17.06.2022
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
5
Недоступно в лицензиях:
Ограничений нет
Ядро поддерживает четыре варианта для хранения (файлы, redis, database, memcache) данных сессии. Способ хранения описывается в bitrix/.settings.php в секции 'session':
Файлы
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'file',
]
],
]
]
];
Настройка для разделённой сессии:
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'lifetime' => 14400, // +
'mode' => 'separated', // +
'handlers' => [
'kernel' => 'encrypted_cookies', // +
'general' => [
'type' => 'file',
],
],
]
]
];
Redis
// bitrix/.settings.php
return [
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'redis',
'port' => '6379',
'host' => '127.0.0.1',
],
],
],
]
Кластерное хранения данных сессии
Отличие от обычной конфигурации заключается лишь в servers дополнительных опциях: serializer, persistent, failover, timeout, read_timeout. Про них можно прочитать в официальной документации.
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'redis',
'servers' => [
[
'port' => 6379,
'host' => '127.0.0.1',
],
[
'port' => 6379,
'host' => '127.0.0.2',
],
[
'port' => 6379,
'host' => '127.0.0.3',
],
'serializer' => \Redis::SERIALIZER_IGBINARY,
'persistent' => false,
'failover' => \RedisCluster::FAILOVER_DISTRIBUTE,
'timeout' => null,
'read_timeout' => null,
],
],
],
]
]
];
Настройка для разделённой сессии:
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'lifetime' => 14400, // +
'mode' => 'separated', // +
'handlers' => [
'kernel' => 'encrypted_cookies', // +
'general' => [
'type' => 'redis',
'port' => '6379',
'host' => '127.0.0.1',
],
],
]
]
];
Memcache
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'memcache',
'port' => '11211',
'host' => '127.0.0.1',
],
],
]
]
];
Кластерное хранения данных сессии
Если необходимо создать кластер из memcache серверов, то достаточно добавить настройку servers.
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'memcache',
'servers' => [
[
'port' => 11211,
'host' => '127.0.0.1',
'weight' => 1, //про настройку weight читайте внимательно в документации по memcahe
],
[
'port' => 11211,
'host' => '127.0.0.2',
],
],
],
],
]
]
];
Настройка для разделённой сессии:
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'lifetime' => 14400, // +
'mode' => 'separated', // +
'handlers' => [
'kernel' => 'encrypted_cookies', // +
'general' => [
'type' => 'memcache',
'port' => '11211',
'host' => '127.0.0.1',
],
],
]
]
];
Mysql
Данные хранятся в таблице b_user_session
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'database',
]
],
]
]
];
Настройка для разделённой сессии:
// bitrix/.settings.php
return [
//...
'session' => [
'value' => [
'lifetime' => 14400, // +
'mode' => 'separated', // +
'handlers' => [
'kernel' => 'encrypted_cookies', // +
'general' => [
'type' => 'database',
]
],
]
]
];