在日志文件中查找时间戳 - 从那里读取和存储值

时间:2012-07-06 16:57:18

标签: php parsing

所以我有这个脚本解析文件并将数据插入我的数据库。但是现在我正在查看的文件在我需要的东西之前有一堆随机文本(基本上是日志其余部分的一个键)。所以我需要在文件中找到时间戳,然后按照通常的那样操作,忽略时间戳之前的所有内容。日志看起来像这样 -

(Blah blah, random stuff)

'2004-05-12 15:45:00',0,0,0,141713,,123.288,122.449,123.2...

继续我的代码,一旦我“点击”时间戳,将值存储在数组中 -

// read and store the values in an array
while (($buffer = gzgets($fp, 8192)) !== false)
        {
        $val[$i] = $buffer;
        $i++;
    }
    $qry = "insert into afeed 

    set time_stamp='".$val[0]."', 
    error_value='".$val[1]."',
    firstThing='".$val[2]."',
    ...
    otherstuff='".$val[12]."',
    lastThing='".$val[13]."'";

}

所以要么寻找时间戳并从那里开始,要么我在想,因为每次我找到它的大小并且'跳过那么多字节'时,开头的所有无用的东西都是一样的?

这有可能吗?

1 个答案:

答案 0 :(得分:0)

您的两种潜在解决方案都是可行的。 “跳过那么多字节”的解决方案可能是最直接的。如果你提前知道无用东西的长度,例如,每个文件开头的64个字节,你可以使用类似gzseek($fp, 64)的东西来移动文件指针超过无用的东西。

既然你说无用的东西每次都是一样的,这应该有效。如果无用的东西不是预定的长度,一旦你确定了无用的东西有多长时间,这个方法仍然可以使用(我需要看看有什么无用的东西来决定最好的方法)。