Intereting Posts
PHP разбивает массивы на группы на основе равных значений Обновление базы данных с помощью ссылки html link с помощью ajax php mysql Загрузка файла через https с помощью файла cordova filetransfer Не удается подключиться с помощью mysql_connect к базе данных в хостинге ipage.com? Как сохранить php-скрипт от тайм-аута из-за длинного запроса mysql Строка parse, содержащая точки в php Запросить последние данные от lastfm с помощью codeigniter и xmlrpc PHP MVC – Как контроллер и просмотр могут обращаться к одному экземпляру модели? Получение подстроки из базы данных Любой файл .php, вызывающий ОШИБКУ ВНУТРЕННЕГО СЕРВЕРА Возвращение первого предложения из переменной в PHP Переменные расширения класса переменной в PHP – возможно ли это? Что не так с этим регулярным выражением PHP для проверки пароля? Ошибка компиляции: отсутствует завершение] для символьного класса Поиск более 1 колонки

Symfony2, настройка хранилища сеансов pdo в базе данных

Для моего проекта Symfony2 я использую хранилище сеансов в базе данных.

Итак, я настраиваю свой config.yml следующим образом:

framework: session: handler_id: session.handler.pdo parameters: pdo.db_options: db_table: session db_id_col: session_id db_data_col: session_value db_time_col: session_time services: pdo: class: PDO arguments: - "pgsql:host=%database_host%;dbname=%database_name%" - "%database_user%" - "%database_password%" calls: - [setAttribute, [3, 2]] session.handler.pdo: class: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler arguments: ["@pdo", "%pdo.db_options%"] 

Все в порядке, когда я вхожу в систему, запись создается в моей базе данных, и сеансы работают нормально.

Но как я могу определить время жизни моего сеанса, когда он находится в базе данных? Почему у меня в моей таблице сеансов много строк (+50), если у меня только 4 участника в моем приложении?

Как я могу настроить это? Мне просто нужен один сеанс при входе в систему.

Вы можете уменьшить количество строк в таблице сеансов, если чаще всего запускать сборщик мусора.

http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability

В файле php.ini

session.gc_probability = 1

session.gc_divisor = 1

session.gc_maxlifetime = 36000

Эти настройки будут запускать сборщик мусора со 100% -ной вероятностью, который не рекомендуется для производства, но вы должны иметь возможность проверить его работу и настроить настройки по мере необходимости.

Я думаю, что количество строк не продиктовано временем жизни сеанса, по крайней мере, не полностью.

Основной причиной стольких рядов является защита от захвата сеанса. Таким образом, если вы закроете браузер и вернетесь на свой веб-сайт, сессия не будет восприниматься как должное, а будет восстановлена .

Используете ли вы FOSUserBundle для аутентификации? Я точно знаю, что он поддерживает настройку защиты захвата сеанса …

РЕДАКТИРОВАТЬ:

chrsva упомянул его здесь: как работает фиксация сеанса Symfony2?