主页 > 本站发布 > 源码工具 >
发布时间:2016-02-18 作者:apizl 阅读:638次

在使用iis的时候需要分析日志信息,或蜘蛛抓取日志信息。

如下代码可以方便实现需要的功能。

将如下代码保存到iislog.php里面 访问运行即可:

<?php
/**
 * 爱资料php日志分析工具v10
 * by jack(chenran) 
 * time 2016-2-15
 * http://www.apizl.com 发布地址:http://www.apizl.com/archives/view-69507-1.html
 */
error_reporting(0);
header("Content-type: text/html; charset=utf-8");
$path = "D:\web\me-web\log\W3SVC28\\";//日志地址
$file_list = scandir($path);
$file_list = array_reverse($file_list);
$count = count($file_list);
$log_name = isset($_GET["log"]) ? $_GET["log"] : "";
if (empty($log_name)) {
    $path_ = $path . $file_list[0];
} else {
    $path_ = $path . $log_name;
}
$log = file_get_contents($path_);

/**
 * 得到每行详细详细
 * @param type $log
 * @param type $spider
 * @return type
 */
function httpinfo_w3c($log, $spider) {
    $arrlist = array();
    preg_match_all('/(20' . date("y") . '.*' . $spider . '.*)/', $log, $matches); //
    for ($i = 0; $i < count($matches[0]); $i++) {
        $arr = explode(" ", $matches[0][$i]);
        $arr[4] = "http://" . $_SERVER["HTTP_HOST"] . $arr[4];
        $arrlist[$i] = $arr;
    }
    return $arrlist;
}

/**
 * 返回总数
 * @param type $log
 * @param type $spider
 * @return type
 */
function spider_count($log, $spider) {
    preg_match_all('/' . $spider . '/', $log, $matches); //谷歌 次数
    return count($matches[0]);
}

/**
 * 向界面输出数据
 * @param type $log
 * @param type $spider
 * @return type
 */
function send_tr($log, $spider) {
    $html = "";
    $arr = httpinfo_w3c($log, $spider);
    for ($i = 0; $i < count($arr); $i++) {
        $html.=" <tr>
                    <td>{$arr[$i][0]} {$arr[$i][1]}</td>
                    <td>{$arr[$i][3]}</td>
                    <td>{$arr[$i][4]}</td>
                    <td>{$arr[$i][8]}</td>
                    <td>{$arr[$i][9]}</td>
                    <td>{$arr[$i][10]}</td>
                </tr>";
    }
    return $html;
}

/**
 * 输出选择log列表
 * @global type $file_list
 * @return string
 */
function send_select() {
    global $file_list;
    $break = 30;
    $html = "";
    $q = 0;
    for ($i = 0; $i < count($file_list); $i++) {
        $html .= "<option value=\"$file_list[$i]\">{$file_list[$i]} - " . Send_size($file_list[$i]) . "</option>";
        if ($i > $break) {
            break;
        }
    }
    return $html;
}

/**
 * 输出文件大小
 * @global string $path
 * @param type $log_name
 * @return type
 */
function Send_size($log_name) {
    global $path;
    $size = (int) filesize($path . $log_name);
    $size = format_bytes($size);
    return $size;
}

function format_bytes($size) {
    $units = array(' B', ' KB', ' MB', ' GB', ' TB');
    for ($i = 0; $size >= 1024 && $i < 4; $i++)
        $size /= 1024;
    return round($size, 2) . $units[$i];
}
?>
<html>
    <head>
        <title>爱资料php日志分析工具v10</title>
    </head>
    <body>
        <a href=""><h3>爱资料php日志分析工具v10</h3></a>
        选择日志:<select onchange=" GetLog(this)">
<?php echo send_select(); ?>
        </select>
        <a href="#baidu"><h3>百度 - <?php echo spider_count($log, "Baiduspider"); ?>次</h3></a>
        <a href="#sm"><h3>神马 - <?php echo spider_count($log, "YisouSpider"); ?>次</h3></a>
        <a href="#google"><h3>谷歌 - <?php echo spider_count($log, "Googlebot"); ?>次</h3></a>
        <a href="#360"><h3>360 - <?php echo spider_count($log, "360Spider"); ?>次</h3></a>
        <h4>------------------------------------------------------------------------</h4>
        <h2 onclick="show('baidu');">百度 - <?php echo spider_count($log, "Baiduspider"); ?>次</h2>
        <table border=1 id="baidu" style="display: none;">
<?php echo send_tr($log, "Baiduspider"); ?>
        </table>
        <h2 onclick="show('sm');">神马 - <?php echo spider_count($log, "YisouSpider"); ?>次</h2>
        <table border=1 id="sm" style="display: none;">
<?php echo send_tr($log, "YisouSpider"); ?>
        </table>
        <h2 onclick="show('google');">谷歌 - <?php echo spider_count($log, "Googlebot"); ?>次</h2>
        <table border=1 id="google" style="display: none;">
<?php echo send_tr($log, "Googlebot"); ?>
        </table>
        <h2 onclick="show('360');">360 - <?php echo spider_count($log, "360Spider"); ?>次</h2>
        <table border=1 id="360" style="display: none;">
<?php echo send_tr($log, "360Spider"); ?>
        </table>
        <script type="text/javascript" src="http://www.apizl.com/js/jquery1.4.js"></script>
        <script>
            $(function() {
                $("select").val("<?php echo $log_name; ?>");
            })
            function show(id)
            {
                var status = $("#" + id).css("display");
                if (status == "none")
                {
                    $("#" + id).css("display", "block");
                } else {
                    $("#" + id).css("display", "none");
                }
            }
            function GetLog(t)
            {
                var name = $(t).val();
                window.location = '?log=' + name;
            }
        </script>

    </body>
</html>

QQ截圖20160218103318.png

文章由爱资料原创本文地址:https://www.apizl.com/archives/view-69507-1.html,转载请以链接形式标明本文地址!
关键字词:

相关文章