8.25. Communicating Within Apache8.25.1. ProblemYou 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. DiscussionWhen 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 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 8.25.4. See AlsoDocumentation on apache_note( ) at http://www.php.net/apache-note; information on logging in Apache at http://httpd.apache.org/docs/mod/mod_log_config.html. Copyright © 2003 O'Reilly & Associates. All rights reserved. |
|