Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2012, 15:19
Avatar de mager3
mager3
 
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 12 años, 6 meses
Puntos: 4
Información al ejecutar dos veces la misma tarea se cuelga mysql

Hola a todos:

Tengo esta pagina que me toma un archivo .CSV y lo carga en la base de datos SIN PROBLEMAS ("Aproximadamente son 12 mil registros, ahora si ejecuto nuevamente esta rutina sin vaciar la base de datos en ese mismo momento me arroja el siguiente ERROR en pantalla:

Código PHP:
Ver original
  1. Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10055) in C:\Program Files\VertrigoServ\www\Rips\datos_sura.php on line 15
  2. Error conectando a la base de datos.

El codigo PHP es este:

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. </head>
  7. <body>
  8. <?php
  9. /* Código que lee un archivo .csv con datos, para luego insertarse en una base de datos, vía MySQL
  10. *  Gracias a JoG
  11. *  http://gualinx.wordpress.com
  12. */  
  13. function Conectarse() //Función para conectarse a la BD
  14. {
  15.        if (!($link=mysql_connect("localhost","root","vertrigo")))  { //Cambia estos datos
  16.            echo "Error conectando a la base de datos.";
  17.            exit();
  18.        }
  19.         if (!mysql_select_db("rips",$link)) {
  20.             echo "Error seleccionando la base de datos.";
  21.            exit();
  22.        }
  23.        return $link;
  24. }
  25. $row = 1;
  26. $handle = fopen("datos_sura.csv", "r"); //Coloca el nombre de tu archivo .csv que contiene los datos
  27. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //Lee toda una linea completa, e ingresa los datos en el array 'data'
  28.     set_time_limit(0);
  29.     $num = count($data); //Cuenta cuantos campos contiene la linea (el array 'data')
  30.     $row++;
  31.     $cadena = "INSERT INTO rips_sura (fecha,orden,ips,tipo_iden_paci,num_iden_paci,nombres_paciente,sexo,edad,tipo_iden_me,num_iden_me,nombres_medico,cod_prest,nombres_prestacion,causa_externa,finalidad_consulta,finalidad_procedimiento,dx_ppal,dx_relacionado) VALUES ("; //Cambia los valores 'CampoX' por el nombre de tus campos de tu tabla y colócales los necesarios
  32.  
  33.     for ($c=0; $c < $num; $c++) { //Aquí va colocando los campos en la cadena, si aun no es el último campo, le agrega la coma (,) para separar los datos
  34.         set_time_limit(0);
  35.         if ($c==($num-1))
  36.               $cadena = $cadena."'".$data[$c] . "'";
  37.         else
  38.               $cadena = $cadena."'".$data[$c] . "',";
  39.     }
  40.  
  41.     $cadena = $cadena.");"; //Termina de armar la cadena para poder ser ejecutada
  42.     //echo $cadena."<br>";  //Muestra la cadena para ejecutarse
  43.  
  44.      $enlace=Conectarse();
  45.      $result=mysql_query($cadena, $enlace); //Aquí está la clave, se ejecuta con MySQL la cadena del insert formada
  46.      mysql_close($enlace);
  47.      }
  48. fclose($handle);
  49.  
  50. ?>
  51.  
  52. <h2>Se insertaron <?php echo $row ?> Registros en la tabla rips_sura</h2>
  53. <?php echo "<META HTTP-EQUIV='Refresh' CONTENT='3;URL=sura.php'>"; ?>
  54. </body>
  55. </html>

yo intenten poniendole este codigo dentro de los while set_time_limit(0); pero continua el problema, ya que mi impresion es que como son tantos registros el mysql se bloquea temporalmnte, sera que hay algun codigo para aumentar el tiempo de ejecucion de los scrips? o que puede ser el problema?