Взаимодействие в рамках Apache

Задача
Необходимо взаимодействовать из PHP с другими частями процесса Apache, обрабатывающего запрос. Это включает установку переменных в файле access_log.

Решение
Это делается при помощи функции apache_note():

// получаем значение
$session = apache_note('session');
// устанавливаем значение
apache_note('session', $session);

Обсуждение
Обрабатывая запрос клиента, Apache совершает ряд шагов, а PHP представляет только одно звено в целой цепи. Apache также переопределяет URL, идентифицирует пользователей, регистрирует запросы и делает многое другое. Во время обработки запроса каждый обработчик имеет доступ к множеству пар ключ/значение, называемому notes table.
Функция apache_note() обеспечивает доступ к этому множеству, чтобы получить информацию, установленную обработчиком на ранней стадии процесса, и оставить эту информацию для обработчика на более поздней стадии.

Например, если для идентификации пользователей и сохранения значений переменных во время запроса используется модуль сеанса, то это можно объединить с анализом файла журнала, и поэтому можно определить среднее количество просмотров страницы в расчете на одного пользователя.


Совместное применение функции apache_note() и журнального модуля позволяет записать идентификатор сеанса прямо в файл access_log для каждого запроса:

// извлекаем идентификатор сеанса и добавляем его
// в множество notes table веб-сервера Apache
apache_note('session_id', session_id());

Затем модифицируйте файл httpd.conf, добавляя следующую строку
к LogFormat:
%{session_id}n

Заключительный символ n указывает Apache на необходимость использовать переменную, сохраненную в его таблице уведомлений (notes table) другим модулем.

Если PHP скомпилирован с параметром конфигурации --enable-memory-limit, то он запоминает максимальный размер памяти, занимаемой каждым запросом, в его записи, называемой mod_php_memory_usage. Добавьте информацию о распределении памяти в LogFormat:
%{mod_php_memory_usage}n

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Аутентификация, основанная на cookies
Буферизация вывода в броузер
Идентификация различных броузеров
Настройка обработки ошибок
Отслеживание сеанса работы с сайтом

Вернуться в раздел: PHP / 8. Основы Web