[Php-avanzado] Bucle de inserts

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Dic 9 04:08:41 ART 2008


Hola Mauro,

	no está mal la función, pero efectivamente si tarda más de 30 segs, el
servidor va a abortar la ejecución.
	Podrías optimizarla cambiando para que en vez de hacer un insert por
línea, haga un insert múltiple con el formato:

insert into tabla (id,codigo,descripcion,precio,grupo,familia,marca)
VALUES (los valores del primero), (los valores del segundo), (etc)

	y luego ejecutar un solo mysql_query() con esta consulta larga.

El lun, 08-12-2008 a las 19:43 -0300, Mauro Giuffo escribió:
> Hola:
> 
> tengo el siguiente problema. Hice dos funciones:
> 
> una levanta una lista de articulos desde un archivo de texto a un
> array
> la otra inserta cada item del array en una base de datos
> 
> 
> El problema esta en la segunda funcion ya que tarda mas de 30 segundos
> y aparentemente se corta el script, solo llega a insertar
> aproximadamente 1200 articulos de 2000 que hay en el archivo. Quisiera
> saber si hay algo mal en la segunda funcion o si se la puede mejorar ,
> ya que la primera tarda menos de un segundo
> 
> 
> <?php
> 
> 
> 
>  function leer_articulos_txt(){
>   //Abro el fichero en modo lectura 
>   $archivo = fopen("articulos.txt","r"); 
>   $buffer = fgets($archivo); 
>   if(trim($buffer)=="ARTICULOS"){ // me aseguro de que sea el listado
> de articulos
>   //Hasta que no llegue al final del fichero 
>   while(!feof($archivo)){ 
>   $buffer = fgets($archivo); 
>   $lista[]=explode("|",$buffer);
>   }
>   }
>   return $lista;
>  }
>  
> 
> 
>  function insertar_articulos_bd($lista){
>   include('conexion.php');
>   $consulta = "truncate table articulos"; //limpio la tabla
>   $resultado=mysql_query($consulta) or die (mysql_error());
>   
>   foreach ($lista as $articulo) {
>   $consulta = "INSERT INTO articulos
> (id,codigo,descripcion,precio,grupo,familia,marca) VALUES
> (NULL,'$articulo[0]','$articulo[1]','$articulo[2]','$articulo[3]','$articulo[4]','$articulo[5]')";
>   $resultado=mysql_query($consulta) or die (mysql_error());
>   }
>  }
>  
> 
> 
> ?>
> 
> Muchas gracias
> Mauro Giuffo
> 
> 
> 
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado