PHPBuilder - Creating your own logfile Page 2



RSS Twitter
Articles Site Operation

Creating your own logfile - Page 2

by: Mattias Nilsson
|
July 30, 2000

The next problem I ran into was that I would get inacurate (or no) filesize specifications in the log because it's not possible to find out how much content that gets generated from your PHP script. I ended up recording the original size of the PHP3 file, as this would at least give me a hint about how much data is actually sent each day/week/month (it's an option - use it or don't).
Well, not much more to say except "Here's the code, use it!" Just include this file the first thing you do in all your PHP scripts.

<?php

/*
 * Common Logfile Format script.
 * 
 * Author: Mattias Nilsson <mattias_at_coolt.nu>
 *
 */ 

/* User definable variables */ 
$logfile =  "clf.log";    /* Filename of log to write to */ 
$timezone =  "+0100";     /* Timezone correction */ 
$lookup_size true;     /* Set to true to enable filesize lookup */ 
$document_root =  "/usr/local/apache/share/htdocs";

/* A note about the lookup_size directive:
 * This will make this script lookup the size of the original file on disk,
 * which may or may not be the same amount of data sent to the client.
 * It does give you a hint though..
 * Oh, you have to set $document_root aswell if this should work..
 */ 

function write_to_log($str) {
    if(
$fd = @fopen($GLOBALS"logfile"],  "a")) {
    
fputs($fd$str);
    
fclose($fd);
    }
}

function 
get_var($name,$default) {
    if(
$var getenv($name)) {
    return 
$var;
    } else {
    return 
$default;
    }
}

if(
$remote_host get_var"REMOTE_HOST"false)) {
    
$remote_host get_var"REMOTE_ADDR",  "-");
}
$remote_user get_var"REMOTE_USER",  "-");
$remote_ident get_var"REMOTE_IDENT",  "-");
$server_port get_var"SERVER_PORT"80);
if(
$server_port!=80) {
    
$server_port =  ":" $server_port;
} else {
    
$server_port =  "";
}
$server_name get_var"SERVER_NAME",  "-");
$request_method get_var"REQUEST_METHOD",  "GET");
$request_uri get_var"REQUEST_URI",  "");
$user_agent get_var"HTTP_USER_AGENT",  "");
if(
$lookup_size == true && $document_root) {
    
$filename ereg_replace"\?.*",  ""$request_uri);
    
$filename =  "$document_root$filename";
    if(!
$size filesize($filename)) {
    
$size 0;
    }
} else {
    
$size 0;
}

$date gmdate"d/M/Y:H:i:s");
$log "$remote_host $remote_ident $remote_user [$date $timezone] \"".
    
"$request_method http://$server_name$server_port$request_uri\" 200 $size\n";

write_to_log($log);

?>
--Mattias

« Previous Page
1
|
2

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Mattias Nilsson

Comment:



Comment:

(Maximum characters: 1200). You have characters left.