При установке/обновлении MODX Revo может появиться проверка:
Checking if sessions garbage collector are properly configured…
Смысл предупреждения простой: по умолчанию MODX хранит сессии в базе (modx_session), а очистка просрочки запускается через механизм PHP GC — по вероятности (session.gc_probability/session.gc_divisor). Если GC отключить или настроить неудачно, таблица сессий будет расти и со временем начнёт тормозить сайт и раздувать бэкапы.
1. Рекомендуемые значения:
- Обычный сайт / средний трафик:
session.gc_probability=1,session.gc_divisor=1000(примерно 0.1% запросов запускают GC). - Очень высокий трафик (много PHP-хитов): можно увеличить divisor до
5000–10000, чтобы GC не срабатывал слишком часто. - Важно: не ставь
session.gc_probability=0(это по сути значит никогда не чистить для MODX-сессий).
2. Где это править
Вариант A: php.ini (глобально)
; php.ini (или отдельный ini в conf.d) session.gc_probability = 1 session.gc_divisor = 1000
Вариант B: пул PHP-FPM (точечно для сайта)
; /etc/php-fpm.d/site.conf (пример) php_value[session.gc_probability] = 1 php_value[session.gc_divisor] = 1000
Вариант C: .user.ini (если разрешено на хостинге)
; .user.ini в корне сайта session.gc_probability=1 session.gc_divisor=1000
Вариант D: .htaccess (только Apache, если разрешено)
php_value session.gc_probability 1 php_value session.gc_divisor 1000
Проверка: открой phpinfo() (временно) и найди session.gc_probability/session.gc_divisor — там должны быть новые значения.
Альтернативы (когда лучше иначе)
- Периодическая чистка по крону: полезно для низкого трафика и когда нужно, например, гарантированно раз в сутки.
- Сессии в Redis: снижает нагрузку на MySQL, но усложняет инфраструктуру.
Разовая безопасная чистка (если таблица уже распухла)
Если нужно быстро сдуть modx_session, ориентируйся на TTL. В MODX часто используют системную настройку session_gc_maxlifetime (например, 806400 секунд = 7 дней).
-- пример: удалить всё, что не обновлялось дольше 7 дней (806400 секунд) DELETE FROM modx_session WHERE access < (UNIX_TIMESTAMP() - 806400);
Комментарии
0Нашли ошибку или хотите дополнить материал?