8.24. Communicating Within Apache
Problem
You want to communicate from PHP to other parts of the Apache request process. This includes setting variables in the access_log .
Solution
Use apache_note( )
:
// get value $session = apache_note('session'); // set value apache_note('session', $session);
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( ));
Then, modify your
httpd.conf file
to add this string to your LogFormat
:
%{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 ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.