Полный рефакторинг хранения сессий. Теперь используется связка SQLite + Обновленный Cache (L1/L2).
Имплементирован интерфейс SessionUpdateTimestampHandlerInterface — теперь, если данные сессии не изменились, обновляется только время (timestamp), что значительно ускоряет работу и экономит I/O операции.
Настроены современные параметры безопасности для сессионных кук: cookiehttponly = 1, usestrictmode = 1, cookiesamesite = Lax.
Оптимизированы настройки SQLite (включен WAL режим, mmap_size, busyTimeout), предотвращающие блокировки базы данных (database is locked) при конкурентном доступе.
-
Добавлена поддержка интерфейса SessionUpdateTimestampHandlerInterface для оптимизации обновления времени доступа (updateTimestamp) без перезаписи данных.
Реализовано двухуровневое кеширование: быстрый доступ через APCU/ArrayCache и персистентное хранение в SQLite3.
Внедрено использование подготовленных выражений (Prepared Statements) для защиты от SQL-инъекций.
Оптимизирована работа с SQLite:
Включен режим WAL (Write-Ahead Logging) для предотвращения блокировок при одновременном доступе.
Настроены PRAGMA (mmapsize, synchronous, tempstore) для повышения производительности.
Добавлен индекс по полю last_accessed для ускорения работы Garbage Collector.
Улучшена безопасность:
Добавлена валидация ID сессии регулярным выражением.
Установлены флаги cookiehttponly, usestrictmode и cookiesamesite (Lax).
Добавлена обработка исключений и логирование критических ошибок в Session.log.
Реализован локальный статический кеш для исключения повторных чтений из БД/внешнего кеша в рамках одного PHP-процесса.
Код приведен к стандартам PSR и снабжен подробными комментариями.