1

したがって、ファイルを解析してデータをDBに挿入するこのスクリプトがあります。しかし、今私が見ているファイルには、必要なものの前にランダムなテキスト(基本的にはログの残りの部分のキー)がたくさんあります。したがって、ファイル内のタイムスタンプを見つけて、そこから通常どおりに操作し、タイムスタンプの前にあるものをすべて無視する必要があります。ログは次のようになります-

(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]."'";

}

それで、タイムスタンプを探してそこから始めるか、それとも最初の役に立たないものはすべて同じなので、そのサイズを見つけて「そのバイト数をスキップする」ことができるたびに同じだと思っていましたか?

これは可能ですか?

4

1 に答える 1

0

あなたの潜在的な解決策の両方が可能です。「その数バイトをスキップする」ソリューションは、おそらく最も簡単です。役に立たないものの長さが、たとえば、すべてのファイルの先頭で64バイトになることが事前にわかっている場合はgzseek($fp, 64)、ファイルポインタを役に立たないものを超えて移動するなどの方法を使用できます。

役に立たないものは毎回同じだと言ったので、これはうまくいくはずです。役に立たないものがあらかじめ決められた長さでない場合でも、役に立たないものの長さを決定すれば、この方法を使用できます(これを行うための最良の方法を決定するには、役に立たないものが何であるかを確認する必要があります)。

于 2012-07-06T17:11:53.120 に答える