用php的文件操作函数,读取每一行数据查找Thread子串,累计次数就行了

解决方案 »

  1.   

    <?php
    $handle = fopen ("*.txt", "r");
    while (!feof ($handle)) {
        $buffer = fgets($fd, 4096);
        echo $buffer;//<=读出每一行。
    }
    fclose ($handle);
    ?> 
    =======================
    Lz可以看一下手册上的 fgets()
      

  2.   

    关键是"按日期分类,统计Thread出现在次数!"
    读取.txt文件我会写
    <?PHP
        $db_file = "db.txt";
        $arr_file = file("$db_file");
       
        foreach ($arr_file as $str_line){
             $str_line = trim ($str_line);
             list($date, $time, $thread, $status ) = explode(" ", $str_line);
             echo "date:$date time:$time  thread:$thread status:$status  <br>";
        }
    ?>
      

  3.   

    看下你的数据结构并不是很杂,你可以试着用字符处理函数,当然也可用正则
    $container = array();
    $filepath = './csdn.txt';
    if (file_exists($filepath))
    {
    $fp = fopen($filepath, r);
    while (!feof($fp))
    {
    $aline = fgetss($fp);
    $thread = substr($aline, 33, 8);
    $container[$thread] += 1;
    }
    print_r($container);
    }
    else
    {
    return false;
    }
      

  4.   

    04-31 07:02:09
    按空格分成数组 然后分析出来 Group by 就可以了.
    建个临时表先.笨方法:)
      

  5.   

    正则分析shell的话用gawk就很容易的
      

  6.   

    "按空格分成数组 然后分析出来 Group by 就可以了." 
    怎么做啊?讲清楚点,好吗?谢谢!
      

  7.   

    <?PHP
        $db_file = "db.txt";
        $arr_file = file("$db_file");
       
        foreach ($arr_file as $str_line){
             $str_line = trim ($str_line);
             list($date, $time, $thread, $status ) = explode(" ", $str_line);
             echo "date:$date time:$time  thread:$thread status:$status  <br>";
        }
    ?>你不是会吗,就只差一步,怎不想一下呢。呵呵
    <?PHP
        $db_file = "db.txt";
        $arr_file = file("$db_file");
       $get_date_type_arr=array();
        foreach ($arr_file as $str_line){
             $str_line = trim ($str_line);
             list($date, $time, $thread, $status ) = explode(" ", $str_line);
             $date = substr($date,0,10);
             $get_date_type_arr[$date]=$get_date_type_arr[$date]+1;
             echo "date:$date time:$time  thread:$thread status:$status  <br>";
        }
       print_r($get_date_type_arr);//打印出来的就是键是日期,值就是日期对应的出现次数
    ?>
      

  8.   

    按照你的记录 
     $date = substr($date,0,10);
    应该是
     $date = substr($date,0,5);
      

  9.   


    哦。多简单的事呀。用得着用PHP程序写吗?做事是看效率的。不要那么死板,虽然PHP也能做出来。。跟着我一步步做吧。
    将你的文件有EditPlus,把里面的东西做点替换。
    按Ctrl+H,选用正则表达式
       将“ \[Thread-”替换成“\t”
       将“ \] DEBUG - send:”替换成“\t”
       将“ receive:”替换成“\t”  Tab健
    保存打开Office,access 
       点新建->链接表,选择刚才的文件,下一步,下一步。。看到刚生成的表了吧。
       然后点查询,新建查询。输入分组求和的SQL语句就行了呀。此方法,可以在更新文件文件的时候,自动更新表里的数组,根本不必在手工修改
    最好的办法就是,你直接用原来的文件,做链接表,在导入的时候,选高级手工创建字段
    以后,这个表的数据,如跟据日志文件的增加,自动增加。多方便的,当然MSSQL也可以导入这样的数据。这此不多说了。
    。。
    PHP的导入方法也是很简单的,读入数组,遍历一次就行了。上面用户也有说到的。
      

  10.   

    查看php的help文档,查文件读取函数和字符串处理函数,其他自己想啦
    别人都写了,以后还得别人写
      

  11.   

    比较简单
    但是对PHP没用过
      

  12.   

    以下代码,楼主稍加改正即为正解:<?php
    $f = file("test.txt");
    $count = array();foreach ($f as $line) {
    eregi("date:(.+) time:.*",$line,$e);
    if(isset($count[$e[1]]))$count[$e[1]] += 1;
    else$count[$e[1]] = 1;
    }
    foreach($count as $key => $line){
    echo $key . ":" . $line . "<br/>";
    }
    ?>
      

  13.   

    欢迎光监点石成金网 http://www.boxigroup.com 网站提供web开发(j2ee .net asp php javascript、c#等) c/s开发(delphi、vb、vc、pb、cb等) 数据库开发(oracle、sqlserver、db2、access、mysql、Postgresql、informix)等学习资料,希望能为你解决燃眉之急 ,请把本网站加入收藏夹,以备不时查询之需 bs+cs讨论群(9638134)
      

  14.   

    这个group by可以这么做:$aLogStatistic = array() ;1,循环读取每行
    2,把每行分解成以下字段:DATE,TIME,THREAD_ID,TYPE,SEND,RECEIVE
    3,以下代码在循环内运行
    $aLogStatistic[DATE] = intval( $aLogStatistic[DATE] ) + 1 ;这样就可以得到“按日期分组统计thread次数”了
      

  15.   

    exploid可以按空格把一个字符串分割成一个数组,然后从中取值累加即可.