По умолчанию механизмы обработки сеанса PHP устанавливают заголовок cookie сеанса и сохраняют сеанс, даже если в сеансе нет данных. Если в сеансе нет данных, я не хочу, чтобы заголовок Set-Cookie
, отправленный клиенту в ответ, и я не хочу, чтобы на сервере хранилась пустая запись сеанса. Если данные добавляются в $_SESSION
, тогда нормальное поведение должно продолжаться.
Моя цель - реализовать ленивое поведение создания сеанса такого типа, что Drupal 7 и Pressflow, где сеанс не сохраняется (или сеанс cookie header), если данные не добавлены в массив $_SESSION
во время выполнения приложения. Суть этого поведения заключается в том, чтобы позволить обратным прокси-серверам, таким как Varnish, кэшировать и обслуживать анонимный трафик, позволяя пройти аутентифицированные запросы до Apache/PHP. Лак (или другой прокси-сервер) настроен для передачи любых запросов без файлов cookie, считая, что если файл cookie существует, то запрос предназначен для конкретного клиента.
Я портировал код обработки сеанса из Pressflow, который использует session_set_save_handler()
, и переопределяет реализацию session_write()
для проверки данных в массиве $_SESSION
перед сохранением и напишет это как библиотеку и добавит ответ здесь, если это лучший/единственный путь.
Мой вопрос: Пока я могу реализовать полностью настраиваемую систему session_set_save_handler()
, существует ли более простой способ получить это ленивое поведение создания сеанса относительно общим образом, который будет прозрачным для большинства приложений?