8.25.1 Problem
You want to
communicate from PHP to other parts of the Apache request process. This includes
setting variables in the access_log.
8.25.2 Solution
// get value
$session = apache_note('session');
// set value
apache_note('session', $session);
8.25.3 Discussion
When Apache processes a request from a client, it goes through
a series of steps; PHP plays only one part in the entire chain. Apache also
remaps URLs, authenticates users, logs requests, and more. While processing a
request, each handler has access to a set of key/value pairs called the notes
table. The apache_note( ) function provides access to the notes
table to retrieve information set by handlers earlier on in the process and
leave information for handlers later on.
For example, if you use the session module to track users and preserve variables across
requests, you can integrate this with your log file analysis so you can
determine the average number of page views per user. Use apache_note( )
in combination with the logging module to write the session ID directly to the
access_log for each request:
// retrieve the session ID and add it to Apache's notes table
apache_note('session_id', session_id( ));
%{session_id}n
The trailing n tells Apache to use a variable stored
in its notes table by another module.
If PHP is built with the --enable-memory-limit
configuration option, it stores the peak memory usage of each request in a note
called mod_php_memory_usage. Add the memory usage information to a
LogFormat with:
%{mod_php_memory_usage}n