Notice: Undefined offset: 1 in.....?

Messages postés
294
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
3 décembre 2012
-
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
salut,
 

Voici mon code :

<?
ini_set ("max_execution_time", "21600");
require ("config.inc");

//////
$con=mysql_connect("127.0.0.1",$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;
   $pasadas = 0;
   if (!feof($log)) {
      $linea = fgets($log);
      $arr = explode(' ', $linea);
      list ($hora, $mili) = explode ('.', $arr[0]);
      $tiempo = date("m/d/y H:i:s", $hora).".$mili";
     
   ///////////   $res mysql_query ("SELECT time FROM log WHERE time '$tiempo';") or die(mysql_error());   //$res pg_query ($conex, "SELECT time FROM log WHERE time '$tiempo'");
      if (mysql_num_rows($res))
      {
         $continua = 0;
         echo "No se puede procesar este archivo, ya existe un registro en la B.D con el mismo tiempo que el primer registro del archivo, posiblemente se deba a que este ya fue procesado
";
         $start = time();
      }
      else
      {
         $continua = 1;
         $start = time();
      }
   }

   $i = 0;
   while (!feof($log) && $continua == 1) {
      $j = 0;
      foreach ($arr as $str)
         if ($str <> '') {
            $registro[$j] = $str;
            $j++;
         }
      list ($tiempo, $transcurrido, $equipo_remoto, $codigo_status, $bytes, $metodo, $url, $autenticacion, $peerstatus_peerhost, $tipo) = $registro;
      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 ($codigo, $status) = explode ('/', $codigo_status);
      list ($peerstatus, $peerhost) = explode ('/', $peerstatus_peerhost);
      list ($hora, $mili) = explode ('.', $tiempo);
      $tiempo = date("m/d/y H:i:s", $hora).".$mili";
      list ($tipo1, $tipo2) = explode ('/', $tipo);    ////////////?????

      $res = mysql_query ("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');") 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))
     
      $pasadas++;
      else {
         $err++;
         echo "
Error insertando: 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')
";
      }

      $linea = fgets($log);
      $arr = explode(' ', $linea);
      $j = 0;
      foreach ($arr as $str)
         if ($str <> '') {
            $registro[$j] = $str;
            $j++;
         }
   }

   ///////////////
   mysql_query ("VACUUM ANALYZE");
   //pg_query ("VACUUM ANALYZE");
   mysql_close ();
   //pg_close ($conex);
  
   fclose($log);
   $end = time();
   $duracion = ($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)/($pasadas + $err);
   echo "
Procesadas: $pasadas
Errores: $err
Promedio Errores: $prom%";
   echo "
Inicio: $start - Finalización: $end - Duración: $duracion Minutos";
}
?>

Ca me sort l'erreur :

Notice: Undefined offset: 1 in c:\users\el_diablo\desktop\squid_log\parse.php on line 78

Notice: Undefined offset: 1 in c:\users\el_diablo\desktop\squid_log\parse.php on line 78

Notice: Undefined offset: 1 in c:\users\el_diablo\desktop\squid_log\parse.php on line 78

Procesadas: 336
Errores: 0
Promedio Errores: 0%
Inicio: 11/27/07 00:28:40 - Finalización: 11/27/07 00:28:40 - Duración: 0 Minutos

De l'aide SVP, Merci!

1 réponse

Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
19
Salut,

$arr = explode(' ', $linea);
$j = 0;
foreach ($arr as $str)
if ($str <> '') {
$registro[$j] = $str;
$j++;
}

Hum... Ca sert à rien de faire un foreach si c'est pour ne pas t'en servir...
Par défaut, explode renvoit un tableau indexé numériquement.
Au lieu de gérer manuellement une clé, tu peux laisser foreach le faire. Et puis tu devrais peut-être faire attention à la syntaxe : foreach doit être suivi d'un bloc, ou d'une ligne unique. Là, tu veux que dans la boucle foreach il exécute plusieurs lignes... Faut lui dire, avec des accolades { et }

$arr = explode(' ', $linea);
foreach ($arr as $key => $str) {
$registro[$key] = $str;
}

Et tu gères les cas où $str est vide plus tard, quand tu t'occuperas de traiter le contenu de $registro.