<?PHP
// Global PHP logging by Sjon Hortensius
define('__phplogging_start'__phplogging_microtime());

function 
__phplogging_microtime(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}

// If an item is empty, set it to NULL, else escape it
function __phplogging_arrmap($input){
    return (empty(
$input)? "NULL" "'".mysql_real_escape_string($input)."'");
}

function 
__phplogging_end(){
    
error_reporting(0);
    
ini_set('display_errors'0);

    global 
$__phplogging_start;
    
$time = (__phplogging_microtime() - __phplogging_start) * 1000;

    
$data = array(
        
'ip'        => $_SERVER['REMOTE_ADDR'],
        
'host'        => $_SERVER['REMOTE_HOST'],
        
'browser'    => $_SERVER['HTTP_USER_AGENT'],
        
'referer'    => $_SERVER['HTTP_REFERER'],
        
'site'        => $_SERVER['SERVER_NAME'],
        
'url'        => $_SERVER['REQUEST_URI'],
        
'request'    => serialize($_REQUEST),
        
'user_unique'    => md5($data['ip'].$data['browser']),
        
'duration'    => $time
    
);

    
$data array_map('__phplogging_arrmap'$data);
    
mysql_pconnect('localhost''smallApps');
    
mysql_query('INSERT INTO smallApps.php_logging VALUES (NULL, '.implode(','$data).')');
}

register_shutdown_function('__phplogging_end');
?>