行ごとに一貫性のないテキスト ファイルにログ ファイルを生成するプロキシ アプリがあります。行が何を報告しているかに応じて、一部のデータが存在するか、または欠落しています。次に例を示します。
2012-08-05 10:48:59 Login.Failure [ip address] 12312191391921
2012-08-05 10:49:05 Login.Success [ip address] 19919292912912 IQi8CaVGiXoPXGy
2012-08-05 12:50:57 Logout 19919292912912 IQi8CaVGiXoPXGy Expired
可能な値は 7 つありますが、ご覧のとおり、すべての値が常に存在するわけではありません。
これらの値をデータベースに入力して、統計を作成したいと考えています。これまでのところ、位置 2 (0,1,2) の配列を調べる必要があると推測しています。特定の文字列と一致する場合は、これらの項目のみが存在すると予想し、別の文字列と一致する場合は、これらの項目のみを予想します。など
これまでの私の考えは、配列を中断し、見つかった値に応じて新しい条件を追加するところまで来ました。それはうまくいかないことはわかっていますが、これは私が考えた限りです:
$output = explode("\n", $output);
foreach($output as $var) {
$tmp = explode(" ", $var);
$dateentered = $tmp[0];
$timeentered = $tmp[1];
$event = $tmp[3];
if $tmp[3]="Login.Failure" then
$IP = $tmp[4];
$username = $tmp[5];
$connection = mysql_connect("localhost", "user", "pass") or die('unable to connect');
mysql_select_db('dbname') or die('unable to select database');
$sql = "INSERT INTO table SET dateentered='$dateentered', timeentered='$timeentered', event='$event', IP ='$IP ', username='$username'";
$result=mysql_query($sql,$connection) or die('Error in query: $query. ' .mysql_error());
else if $tmp[3]="Login.Success" then
$IP = $tmp[4];
$username = $tmp[5];
$session = $tmp[6];
...等々...
私はすべての成功を引き出してそれらを合計し、失敗についても同じことができるようにしたいと考えています。
これにどのようにアプローチしますか?誰かが賢明なワークフローのアイデアを持っているだけでも、そこから構築できます。私は明らかに初心者ですが、ベルトの下にいくつかのページがあります。
すべての返信に感謝します。