Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2011, 03:03
danneg
Invitado
 
Mensajes: n/a
Puntos:
Busqueda Ejecucion de un programa

Buenas ( días | tardes | noches ) tengan ustedes!!...

Bien, esta vez les vengo con una duda, existancial, no es suma importancia pero me gustaria resolverla.

Resulta que u compañero me pidio ayuda para un sistema que estaba aciendo, se trataba de un registrador masivo de datos.

Eventualmente a el cliente se le proporciona un archivo con cierta cantidad de personas en el, digamos, unas 13mil

Mi compañero tenia que sacar de ese archivo las 13mil personas y guardarlas en la base de datos.

Este archivo tienes que ser subido a una web, el archivo pesa al rededor de 16mb, primero tubimos que resolver eso, añadiendo estas lineas al .htaccess

Código Apache:
Ver original
  1. php_value upload_max_filesize 100M
  2. php_value post_max_size 100M
  3. php_value max_execution_time 1000
  4. php_value max_input_time 1000

Segundo, el archivo tiene esta estructura


Código txt:
Ver original
  1. catastro   |nic   |nombre   |dir   |municipio   |barrio   |estado
  2. catastro   |nic   |nombre   |dir   |municipio   |barrio   |estado
  3. catastro   |nic   |nombre   |dir   |municipio   |barrio   |estado
  4. catastro   |nic   |nombre   |dir   |municipio   |barrio   |estado
  5. catastro   |nic   |nombre   |dir   |municipio   |barrio   |estado

Eso lo repetiriamos 13mil veces...

Ahora, para hacer la insersion masiva, le proporciones este codigo (como sugerencia)...

Código PHP:
Ver original
  1. <?php
  2.  
  3.     $db_file = "muchosusuarios.txt";
  4.     $db = file($db_file);
  5.     $order = array_reverse($db);
  6.     $contar_usuarios = count($order);
  7.     $c = 0;
  8.     for ( $i = 0; $i < $contar_usuarios; $i++){
  9.         $e = $i;
  10.         $user = $order[$e];
  11.         $dato = explode("|", $user);
  12.  
  13.         $insert = new mysqli( "localhost", "root", "", "test" );
  14.         if ( mysqli_connect_errno () ) {
  15.             echo "Error: " . mysqli_connect_error();
  16.         }
  17.  
  18.         $_sql = "INSERT INTO `prueba` ("
  19.             .   '`catastro`'
  20.             .   ', `nic`'
  21.             .   ', `nombre`'
  22.             .   ', `dir`'
  23.             .   ', `municipio`'
  24.             .   ', `barrio`'
  25.             .   ', `estado`'
  26.             .   ") VALUES (?, ?, ?, ?, ?, ?, ?)";
  27.         $_ins_bd = $insert->prepare($_sql);
  28.         $_ins_bd->bind_param ('sssssss'
  29.                 ,   $dato[0]
  30.                 ,   $dato[1]
  31.                 ,   $dato[2]
  32.                 ,   $dato[3]
  33.                 ,   $dato[4]
  34.                 ,   $dato[5]
  35.                 ,   $dato[6]
  36.             );
  37.         $insert_into = $_ins_bd->execute();
  38.  
  39.         $c = $c++;
  40.         $insert->close();
  41.     }
  42.     echo "Se registraron {$c} usuarios."
  43. ?>

Bien, esto anda perfecto, tarda alrdedor de 10m/13mil Usuario en ejecutar.

Ya se ha ejecutado varias veces, y he aqui la duda

Sin querer cerre la pestaña del navegador, y pense que se iba a truncar el script, pero mi sorpresa al revisar la bd, es que los usuarios seguian ingresandose

La pregunta es, ¿El programa se sigue ejecutando en el servidor aun cuando la ventana no este abierta?

Ustede, ¿que opinan?... al menos yo nunca lo imagine