Convertir timestamp..

ferjan.kais Messages postés 7 Statut Membre -  
 karistote -
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
A voir également:

1 réponse

karistote
 
petite fonction que je viens de créer pour convertir
la soustraction de deux timestamp en durée jjj:hh:mm:ss (en php)

il faut juste la variable $timestamp_debut pour que cela fonctionne.

$duree_sec=date("U")-$timestamp_debut;

$duree_jou=intval($duree_sec/24/60/60,0);
$duree_rest_sec=$duree_sec-($duree_jou*24*60*60);

$duree_heu=intval($duree_rest_sec/60/60,0);
$duree_rest_sec=$duree_rest_sec-($duree_heu*60*60);

$duree_min=intval($duree_rest_sec/60,0);
$duree_rest_sec=$duree_rest_sec-($duree_min*60);

echo $duree_jou."j ".$duree_heu."h ".$duree_min."m ".$duree_rest_sec."s";
1