Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema al subir mas de 100 mil registros desde un archivo plano

Estas en el tema de problema al subir mas de 100 mil registros desde un archivo plano en el foro de PHP en Foros del Web. Buenas tardes; Intento subir una poblacion mensual que me envian con nuestros usuarios, proviene de un archivo plano pero cuando va por alla en los ...
  #1 (permalink)  
Antiguo 26/11/2015, 08:04
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Información problema al subir mas de 100 mil registros desde un archivo plano

Buenas tardes;

Intento subir una poblacion mensual que me envian con nuestros usuarios, proviene de un archivo plano pero cuando va por alla en los 45 mil o 78 mil registros el navegador se cuelga y muestra el sigueinte mensaje. no se que suecede supongo que es por el volumen de informacion , como puedo mejorar o solucionar desde su experiencia.

IMAGEN


CODIGO QUE REALIZA EL PROCESO.

Código PHP:
Ver original
  1. <?php
  2. include ("conexion.php");
  3. $actualice_activo=mysql_query("UPDATE datos_pacientes SET activo=0;");
  4.  
  5. ini_set('max_execution_time', 0);
  6.  
  7. $filas=file('datos_pacientes/planopacientes.txt');
  8. foreach($filas as $value){
  9. list($tipo_identificacion, $identificacion_paciente,$primer_apellido,$segundo_apellido,$primer_nombre,$segundo_nombre,$sexo,$telefono,$edad,$unidad_edad,$centro_atencion,$id_medico,$sw_rcv,$sw_hta,$sw_dm,$sw_ppr,$sw_displidemia,$enfer_autoinmune,$enfer_hereditaria_coagulacion,$celular,$email,$activo,$fecha_nacimiento) = explode(",", $value);
  10.  
  11. $consultar_existe=mysql_query("SELECT  identificacion_paciente FROM datos_pacientes WHERE identificacion_paciente='$identificacion_paciente' ");
  12. $contador_existe=mysql_num_rows($consultar_existe);
  13.  
  14. $consulta_anterior=mysql_query("SELECT  identificacion_paciente FROM datos_pacientes WHERE activo=1");
  15. $contador_anterior=mysql_num_rows($consulta_anterior);
  16.  
  17. if(($contador_existe)>0){
  18.    
  19. $actualice_paciente=mysql_query("UPDATE datos_pacientes SET edad='$edad',unidad_edad='$unidad_edad',centro_atencion='$centro_atencion',id_medico='$id_medico',sw_rcv='$sw_rcv',sw_hta='$sw_hta',sw_dm='$sw_dm',sw_ppr='$sw_ppr',sw_displidemia='$sw_displidemia',enfer_autoinmune='$enfer_autoinmune',enfer_hereditaria_coagulacion='$enfer_hereditaria_coagulacion',activo=1,fecha_nacimiento='$fecha_nacimiento'
  20. WHERE identificacion_paciente='$identificacion_paciente'");
  21.  
  22.  
  23. $mensaje="El paciente ya se encontraba en nuestra bd pero fue Actualizado";
  24. }
  25. if(($contador_existe)==0){
  26.    
  27. $insert = mysql_query("INSERT INTO
  28. datos_pacientes(tipo_identificacion,identificacion_paciente,primer_apellido,segundo_apellido,primer_nombre,segundo_nombre,sexo,telefono,edad,unidad_edad
  29. ,centro_atencion,id_medico,sw_rcv,sw_hta,sw_dm,sw_ppr,sw_displidemia,enfer_autoinmune,enfer_hereditaria_coagulacion,celular,email,activo,fecha_nacimiento) VALUES ('$tipo_identificacion','$identificacion_paciente','$primer_apellido','$segundo_apellido','$primer_nombre','$segundo_nombre','$sexo','$telefono','$edad','$unidad_edad','$centro_atencion','$id_medico','$sw_rcv','$sw_hta','$sw_dm','$sw_ppr','$sw_displidemia','$enfer_autoinmune','$enfer_hereditaria_coagulacion','$celular','$email',1,'$fecha_nacimiento')");
  30.     $mensaje="Se ingreso el paciente como nuevo en nuestra base de datos";
  31. }
  32.  
  33. $consulta_actual=mysql_query("SELECT identificacion_paciente FROM datos_pacientes  WHERE activo=1");
  34. $contador_actual=mysql_num_rows($consulta_actual);
  35.  
  36. echo "<strong>REGISTROS ANTES DEL CARGUE <font color=red> $contador_anterior </font>REGISTROS DESPUES DEL CARGUE <font color=red> $contador_actual </font></strong>";
  37. echo '<br/>';
  38. echo 'Resultado Cargue: '.$mensaje.'<br/>';
  39. echo 'tipo_identificacion: '.$tipo_identificacion.'<br/>';
  40. echo 'identificacion_paciente: '.$identificacion_paciente.'<br/>';
  41. echo 'primer_apellido: '.$primer_apellido.'<br/>';
  42. echo 'segundo_apellido: '.$segundo_apellido.'<br/>';
  43. echo 'primer_nombre: '.$primer_nombre.'<br/>';
  44. echo 'segundo_nombre: '.$segundo_nombre.'<br/>';
  45. echo 'sexo: '.$sexo.'<br/>';
  46. echo 'telefono: '.$telefono.'<br/>';
  47. echo 'edad: '.$edad.'<br/>';
  48. echo 'unidad_edad: '.$unidad_edad.'<br/>';
  49. echo 'centro_atencion: '.$centro_atencion.'<br/>';
  50. echo 'id_medico: '.$id_medico.'<br/>';
  51. echo 'sw_rcv: '.$sw_rcv.'<br/>';
  52. echo 'sw_hta: '.$sw_hta.'<br/>';
  53. echo 'sw_dm: '.$sw_dm.'<br/>';
  54. echo 'sw_ppr: '.$sw_ppr.'<br/>';
  55. echo 'sw_displidemia: '.$sw_displidemia.'<br/>';
  56. echo 'enfer_autoinmune: '.$enfer_autoinmune.'<br/>';
  57. echo 'enfer_hereditaria_coagulacion: '.$enfer_hereditaria_coagulacion.'<br/>';
  58. echo 'celular: '.$celular.'<br/>';
  59. echo 'email: '.$email.'<br/>';
  60. echo 'fecha_nacimiento: '.$fecha_nacimiento.'<br/>';
  61. echo 'activo: SI<br/><hr>';
  62. }
  63. ?>
  #2 (permalink)  
Antiguo 26/11/2015, 08:09
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

lo ensaye en otro servidor con XAMMP que tengo y sucede lo mismo, solo que peor porque ese otro equipo al parecer no se si es por la memoria o que pero se cierra la sesion de windows cuando va tambien por alla en los 45 mil registros entonces me toca iniciar de nuevo sesion e iniciar XAMMP.
  #3 (permalink)  
Antiguo 26/11/2015, 08:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

En mi opinión realizar procesos muy largos directamente al recibir un POST es mala practica, lo conveniente es delegar dichas operación a un proceso en segundo plano.

De esa forma puedes tardarte todo el tiempo que quieras sin afectar la experiencia del usuario.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 26/11/2015, 12:29
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

pateketrueke, yo estaba pensando en algo así, no se si estoy en lo correcto pero te refieres a hacer por ejemplo un .bat y ejecutar esta sentencia?

"C:\xampp\php\php.exe" "C:\xampp\htdocs\intranet\cargue_poblacion\subir.p hp"
pause


por favor me confirmas si a eso te refieres....
  #5 (permalink)  
Antiguo 26/11/2015, 12:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

Sí, a eso me refiero.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 27/11/2015, 11:13
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

perfecto lo voy hacer asi, pero una duda, lo ejecuto desde nvegador y funciona perfectamente pero si lo hago por debajo me aparece este error:



que crees que debo corregir?
  #7 (permalink)  
Antiguo 27/11/2015, 11:13
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

http://postimg.org/image/62mtnsmkj/
  #8 (permalink)  
Antiguo 27/11/2015, 11:19
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

Saludo.
Eso es por la ubicación del archivo plano,
¿a que nivel está el txt vs el php?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 27/11/2015, 11:22
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

esta al mismo nivel, lo tenia en una subcarpeta pero como no me daba lo deje en el mismo nivel y el codigo lo tengo asi;

Código PHP:
Ver original
  1. $filas=file('planopacientes.txt');
  2. foreach($filas as $value){
  3. list($tipo_identificacion, $identificacion_paciente,$primer_apellido,$segundo_apellido,$primer_nombre,$segundo_nombre,$sexo,$telefono,$edad,$unidad_edad,$centro_atencion,$id_medico,$sw_rcv,$sw_hta,$sw_dm,$sw_ppr,$sw_displidemia,$enfer_autoinmune,$enfer_hereditaria_coagulacion,$celular,$email,$activo,$fecha_nacimiento) = explode(",", $value);
  4.  
  5. $consultar_existe=mysql_query("SELECT  identificacion_paciente FROM datos_pacientes WHERE identificacion_paciente='$identificacion_paciente' ");
  6. $contador_existe=mysql_num_rows($consultar_existe);
  7.  
  8. $consulta_anterior=mysql_query("SELECT  identificacion_paciente FROM datos_pacientes WHERE activo=1");
  9. $contador_anterior=mysql_num_rows($consulta_anterior);
  10.  
  11. if(($contador_existe)>0){
  12.    
  13. $actualice_paciente=mysql_query("UPDATE datos_pacientes SET edad='$edad',unidad_edad='$unidad_edad',centro_atencion='$centro_atencion',id_medico='$id_medico',sw_rcv='$sw_rcv',sw_hta='$sw_hta',sw_dm='$sw_dm',sw_ppr='$sw_ppr',sw_displidemia='$sw_displidemia',enfer_autoinmune='$enfer_autoinmune',enfer_hereditaria_coagulacion='$enfer_hereditaria_coagulacion',activo=1,fecha_nacimiento='$fecha_nacimiento'
  14. WHERE identificacion_paciente='$identificacion_paciente'");
  15.  
  16.  
  17. $mensaje="El paciente ya se encontraba en nuestra bd pero fue Actualizado";
  18. }
  19. if(($contador_existe)==0){
  20.    
  21. $insert = mysql_query("INSERT INTO
  22. datos_pacientes(tipo_identificacion,identificacion_paciente,primer_apellido,segundo_apellido,primer_nombre,segundo_nombre,sexo,telefono,edad,unidad_edad
  23. ,centro_atencion,id_medico,sw_rcv,sw_hta,sw_dm,sw_ppr,sw_displidemia,enfer_autoinmune,enfer_hereditaria_coagulacion,celular,email,activo,fecha_nacimiento) VALUES ('$tipo_identificacion','$identificacion_paciente','$primer_apellido','$segundo_apellido','$primer_nombre','$segundo_nombre','$sexo','$telefono','$edad','$unidad_edad','$centro_atencion','$id_medico','$sw_rcv','$sw_hta','$sw_dm','$sw_ppr','$sw_displidemia','$enfer_autoinmune','$enfer_hereditaria_coagulacion','$celular','$email',1,'$fecha_nacimiento')");
  24.     $mensaje="Se ingreso el paciente como nuevo en nuestra base de datos";
  25. }
  #10 (permalink)  
Antiguo 27/11/2015, 11:49
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

Saludo.
Rutas, delicioso problema.
¡Qué maravilla , eh ave maría ome!
Intentar con esto:

Código PHP:
Ver original
  1. $filas = file(str_replace('subir.php','',$_SERVER['PHP_SELF']).'planopacientes.txt');
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 27/11/2015, 12:11
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problema al subir mas de 100 mil registros desde un archivo plano

huyyyyyy Hermano, lo cambie y de una funciono MIL y MIL GRACIAS a las dos personas que me ayudaron en este problema... SALUDOS

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:59.