| 网站镜像:电信 网通 | 加入收藏 | 设为首页

用PHP生成自己的LOG文件

  • 如果你的服务器不容许你读他的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 $sizen";

    write_to_log($log);
    ?>