用PHP生成自己的LOG文件
如果你的服务器不容许你读他的LOG文件,那你只好停下来分析你的访问者?做你自己的LOG文件吧! <BR> 你仅需做的事情是用PHP计算实际的点击次数,没有错误,没有象'304 Not Modified' 和 'Internal Server Error' 一样的错误。你的代码将生成自己的LOG文件。 <BR><BR><BR><?php <BR><BR>/* 用户定义变量 */ <BR>$logfile = "clf.log"; /*LOG文件写到那里 */ <BR>$timezone = "+0100"; /* Timezone correction */ <BR>$lookup_size = true; /* 设置文件的权限 */ <BR>$document_root = "/usr/local/apache/share/htdocs"; <BR><BR>/* 他可能或不可能对相同的客户端记数 <BR>* 一定要对$document_root 这个变量进行设置才可以工作 <BR>*/ <BR><BR>function write_to_log($str) { <BR>if($fd = @fopen($GLOBALS[ "logfile"], "a")) { <BR>fputs($fd, $str); <BR>fclose($fd); <BR>} <BR>} <BR><BR>function get_var($name,$default) { <BR>if($var = getenv($name)) { <BR>return $var; <BR>} else { <BR>return $default; <BR>} <BR>} <BR><BR>if($remote_host = get_var( "REMOTE_HOST", false)) { <BR>$remote_host = get_var( "REMOTE_ADDR", "-"); <BR>} <BR>$remote_user = get_var( "REMOTE_USER", "-"); <BR>$remote_ident = get_var( "REMOTE_IDENT", "-"); <BR>$server_port = get_var( "SERVER_PORT", 80); <BR>if($server_port!=80) { <BR>$server_port = ":" . $server_port; <BR>} else { <BR>$server_port = ""; <BR>} <BR>$server_name = get_var( "SERVER_NAME", "-"); <BR>$request_method = get_var( "REQUEST_METHOD", "GET"); <BR>$request_uri = get_var( "REQUEST_URI", ""); <BR>$user_agent = get_var( "HTTP_USER_AGENT", ""); <BR>if($lookup_size == true && $document_root) { <BR>$filename = ereg_replace( "?.*", "", $request_uri); <BR>$filename = "$document_root$filename"; <BR>if(!$size = filesize($filename)) { <BR>$size = 0; <BR>} <BR>} else { <BR>$size = 0; <BR>} <BR><BR>$date = gmdate( "d/M/Y:H:i:s"); <BR>$log = "$remote_host $remote_ident $remote_user [$date $timezone] "". <BR>"$request_method http://$server_name$server_port$request_uri" 200 $sizen"; <BR><BR>write_to_log($log); <BR>?> </div>
页:
[1]