求救啊,做不出来就被开除了! 用php的文件操作函数,读取每一行数据查找Thread子串,累计次数就行了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php$handle = fopen ("*.txt", "r");while (!feof ($handle)) { $buffer = fgets($fd, 4096); echo $buffer;//<=读出每一行。}fclose ($handle);?> =======================Lz可以看一下手册上的 fgets() 关键是"按日期分类,统计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>"; }?> 看下你的数据结构并不是很杂,你可以试着用字符处理函数,当然也可用正则$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; } 04-31 07:02:09按空格分成数组 然后分析出来 Group by 就可以了.建个临时表先.笨方法:) 正则分析shell的话用gawk就很容易的 "按空格分成数组 然后分析出来 Group by 就可以了." 怎么做啊?讲清楚点,好吗?谢谢! <?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);//打印出来的就是键是日期,值就是日期对应的出现次数?> 按照你的记录 $date = substr($date,0,10);应该是 $date = substr($date,0,5); 哦。多简单的事呀。用得着用PHP程序写吗?做事是看效率的。不要那么死板,虽然PHP也能做出来。。跟着我一步步做吧。将你的文件有EditPlus,把里面的东西做点替换。按Ctrl+H,选用正则表达式 将“ \[Thread-”替换成“\t” 将“ \] DEBUG - send:”替换成“\t” 将“ receive:”替换成“\t” Tab健保存打开Office,access 点新建->链接表,选择刚才的文件,下一步,下一步。。看到刚生成的表了吧。 然后点查询,新建查询。输入分组求和的SQL语句就行了呀。此方法,可以在更新文件文件的时候,自动更新表里的数组,根本不必在手工修改最好的办法就是,你直接用原来的文件,做链接表,在导入的时候,选高级手工创建字段以后,这个表的数据,如跟据日志文件的增加,自动增加。多方便的,当然MSSQL也可以导入这样的数据。这此不多说了。。。PHP的导入方法也是很简单的,读入数组,遍历一次就行了。上面用户也有说到的。 查看php的help文档,查文件读取函数和字符串处理函数,其他自己想啦别人都写了,以后还得别人写 比较简单但是对PHP没用过 以下代码,楼主稍加改正即为正解:<?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/>";}?> 欢迎光监点石成金网 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) 这个group by可以这么做:$aLogStatistic = array() ;1,循环读取每行2,把每行分解成以下字段:DATE,TIME,THREAD_ID,TYPE,SEND,RECEIVE3,以下代码在循环内运行$aLogStatistic[DATE] = intval( $aLogStatistic[DATE] ) + 1 ;这样就可以得到“按日期分组统计thread次数”了 exploid可以按空格把一个字符串分割成一个数组,然后从中取值累加即可. 帮忙看一下! 急问题 如何提高自己的编程技术 关于逻辑表达式的问题 讨论:自增列在大访问量的时候会出错吗? 欲哭无泪!请各位大侠指点。 用show table status后,在php中如何计算一个表的大小? 》》》》PHP 对 COM 的支持 《《《《 php使用mongodb 求用户距离 验证码不能显示 求一个匹配SQL语句的正则 菜鸟问题:权限问题?
$handle = fopen ("*.txt", "r");
while (!feof ($handle)) {
$buffer = fgets($fd, 4096);
echo $buffer;//<=读出每一行。
}
fclose ($handle);
?>
=======================
Lz可以看一下手册上的 fgets()
读取.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>";
}
?>
$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;
}
按空格分成数组 然后分析出来 Group by 就可以了.
建个临时表先.笨方法:)
怎么做啊?讲清楚点,好吗?谢谢!
$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);//打印出来的就是键是日期,值就是日期对应的出现次数
?>
$date = substr($date,0,10);
应该是
$date = substr($date,0,5);
哦。多简单的事呀。用得着用PHP程序写吗?做事是看效率的。不要那么死板,虽然PHP也能做出来。。跟着我一步步做吧。
将你的文件有EditPlus,把里面的东西做点替换。
按Ctrl+H,选用正则表达式
将“ \[Thread-”替换成“\t”
将“ \] DEBUG - send:”替换成“\t”
将“ receive:”替换成“\t” Tab健
保存打开Office,access
点新建->链接表,选择刚才的文件,下一步,下一步。。看到刚生成的表了吧。
然后点查询,新建查询。输入分组求和的SQL语句就行了呀。此方法,可以在更新文件文件的时候,自动更新表里的数组,根本不必在手工修改
最好的办法就是,你直接用原来的文件,做链接表,在导入的时候,选高级手工创建字段
以后,这个表的数据,如跟据日志文件的增加,自动增加。多方便的,当然MSSQL也可以导入这样的数据。这此不多说了。
。。
PHP的导入方法也是很简单的,读入数组,遍历一次就行了。上面用户也有说到的。
别人都写了,以后还得别人写
但是对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/>";
}
?>
2,把每行分解成以下字段:DATE,TIME,THREAD_ID,TYPE,SEND,RECEIVE
3,以下代码在循环内运行
$aLogStatistic[DATE] = intval( $aLogStatistic[DATE] ) + 1 ;这样就可以得到“按日期分组统计thread次数”了