我有一个代理应用程序在文本文件中生成日志文件,该文件从一行到下一行不一致。根据行报告的内容,某些数据将存在或丢失。这是一个例子:
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
有七个可能的值,但如您所见,它们并非一直都存在。
我想在数据库中输入这些值,以便创建统计信息。到目前为止,我猜我需要查看位置 2 (0,1,2) 的数组,如果它匹配某个字符串,只期望这些项目在那里,如果它匹配另一个字符串,只期望这些项目, ETC。
到目前为止,我的想法已经到了中断数组并根据它找到的值添加新条件的地步。我知道,这行不通,但就我的想法而言,这是:
$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];
...等等...
我希望能够提取所有成功并总结它们,然后对失败做同样的事情,依此类推。
你会如何处理这个问题?如果有人甚至对合理的工作流程有一个想法,我可以从那里构建。我显然只是一个初学者,尽管我确实有好几页。
感谢您的所有回复。