Statut : Non résoluConvertir timestamp..
Posté par
ferjan.kais, le mercredi 28 novembre 2007 à 22:45:40 ini_set ("max_execution_time", "21600");
require ("config.inc");
//////
$con=mysql_connect($db_host,$db_user,$db_pass);
$conex=mysql_select_db($db_name,$con);
//$con_string = "host=$db_host port=5432 dbname=$db_name user=$db_user password=$db_pass";
//$conex = pg_connect ($con_string);
$log = fopen ($log_file, "r");
if ($log <> "") {
$err = 0;
$passees = 0;
if (!feof($log)) {
$ligne = fgets($log);
$arr = explode(' ', $ligne);
list ($heure, $mili) = explode ('.', $arr[0]);
$temps = date("m/d/y H:i:s", $heure).".$mili";
$res = mysql_query ("SELECT time FROM log WHERE time = '$temps';") or die(mysql_error());
//$res = pg_query ($conex, "SELECT time FROM log WHERE time = '$tiempo'");
if (mysql_num_rows($res))
{
$continue = 0;
echo "<FONT color=\"RED\">On ne peut pas traiter ces archives, ou il existe un registre dans la B.D avec le même temps que le premier registre des archives, est probablement dû au fait que ce il a été déjà traité</FONT>";
$start = time();
}
else
{
$continue = 1;
$start = time();
}
}
$i = 0;
while (!feof($log) && $continue == 1) {
$j = 0;
foreach ($arr as $str)/////////////////
if ($str <> '') {
$registre[$j] = $str;
$j++;
}
list ($temps, $passé, $equipement_distant, $code_status, $bytes, $metod, $url, $authentification, $peerstatus_peerhost, $taux) = $registre;
if (strpos($url, '//') != false)
list ($proto, $aux, $dir, $dir_arg) = explode ('/', $url, 4);
else
list ($dir, $dir_arg) = explode ('/', $url, 4);
$dir_arg = addslashes ($dir_arg);
$dir_arg = substr ($dir_arg, 0, 1023);
list ($code, $status) = explode ('/', $code_status);
list ($peerstatus, $peerhost) = explode ('/', $peerstatus_peerhost);
list ($heure, $mili) = explode ('.', $temps);
$temps = date("m/d/y H:i:s", $heure).".$mili";
list ($taux1, $taux2) = explode ('/', $taux);
$res = mysql_query ("INSERT INTO log (time,elapsed,remote_host,code,status,bytes,methode,protocole,direction,argument_url,username,peerstatus,peerhost,type1,type2) VALUES('$temps',$passé,'$equipement_distant','$code','$status',$bytes,'$metod','$proto','$dir','$dir_arg','$authentification','$peerstatus','$peerhost','$taux1','$taux2');") or die(mysql_error());
//$res = pg_query ($conex, "INSERT INTO log (time, elapsed, remote_host,code, status, bytes, method, protocolo, direccion, argumento_url, username, peerstatus, peerhost, type1, type2) VALUES ('$tiempo', $transcurrido, '$equipo_remoto', '$codigo', '$status', $bytes, '$metodo', '$proto', '$dir', '$dir_arg', '$autenticacion', '$peerstatus', '$peerhost', '$tipo1', '$tipo2')");
if (mysql_affected_rows()) ////////////??????????
//if (pg_affected_rows($res))
$passees++;
else {
$err++;
echo "<BR /><FONT color=\"RED\">Error pendant l'insertion: INSERT INTO log (time, elapsed, remote_host,code, status, bytes, methode, protocole, direction, argument_url, username, peerstatus, peerhost, type1, type2) VALUES ('$temps', $passé, '$equipement_distant', '$code', '$status', $bytes, '$metod', '$proto', '$dir', '$dir_arg', '$autenticacion', '$peerstatus', '$peerhost', '$taux1', '$taux2')</FONT>";
}
$ligne = fgets($log);
$arr = explode(' ', $ligne);
$k = 0;
foreach ($arr as $str)////////////////////////////
if ($str <> ' ') {
$registre[$j] = $str;
$k++;
}
}
///////////////
mysql_query ("l'analyse est vide");
//pg_query ("VACUUM ANALYZE");
mysql_close ();
//pg_close ($conex);
fclose($log);
$end = time();
$duree = ($end - $start) / 60.0;
$start = date("m/d/y H:i:s", $start);
$end = date("m/d/y H:i:s", $end);
$prom = ($err * 100.0)/($passees + $err);
echo "<BR />Accusés: <b>$passees</b><BR />Erreurs: <b>$err</b><BR />Moyenne Erreurs: $prom%";
echo "<BR />Début: <b>$start</b> - Fin: <b>$end</b> - Durée: <b>$duree</b> Minutes";
}
c'est un analyseur de log squid et il parse les analyses dans une table mysql mais dans la table j'ai le champs time:0000-00-00 00:00:00 !!!!!!!!!!!!! alors il y a une erreur dans la conversion du timestamp!! aussi comment je fais pour ajouter un id à chaque ligne??
merciiiiiiii