如果你的服務器不容許你讀他的LOG文件,那你只好停下來分析你的訪問者?做你自己的LOG文件吧! 你僅需做的事情是用PHP計算實際的點擊次數,沒有錯誤,沒有象'304 Not Modified' 和 'Internal Server Error' 一樣的錯誤。你的代碼將生成自己的LOG文件。
<?php
/* 用戶定義變量 */ $logfile = "clf.log"; /*LOG文件寫到那里 */ $timezone = "+0100"; /* Timezone correction */ $lookup_size = true; /* 設置文件的權限 */ $document_root = "/usr/local/apache/share/htdocs";
/* 他可能或不可能對相同的客戶端記數 * 一定要對$document_root 這個變量進行設置才可以工作 */
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);
?>
|