[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