Foros del Web » Programando para Internet » PHP »

consulta e insertar error

Estas en el tema de consulta e insertar error en el foro de PHP en Foros del Web. Cordial saludo bueno tengo un problemita al tratar de ingresar una cantidad enorme de registros son al rededor de 20.000 registros estos se deben de ...
  #1 (permalink)  
Antiguo 28/11/2008, 16:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 7 meses
Puntos: 0
Pregunta consulta e insertar error

Cordial saludo

bueno tengo un problemita al tratar de ingresar una cantidad enorme de registros son al rededor de 20.000 registros estos se deben de ingresar teniendo en cuenta que si son nuevos ser insertan con la información y si ya existen se actualiza el estado esto se hace por la carga de un archivo TXT separado por , el problema es que llega hasta un punto y este se trunca.

este es el código

Código PHP:

<table style="border: 2px dotted gray;margin-right:auto;margin-left:auto;">
<?
$lines 
file('Jaibana.txt');
?>
<tr style="text-align:center;background-color:#4a6890;color:#fff;">
<td>Tipo</td><td>Documento</td> <td>Nombre1</td> <td>Nombre2</td> <td>Apellido1</td> <td>Apellido2</td><td>Sexo</td> <td>Edad</td> <td>Categoria</td></tr>
<?
include("conex.php");
mysql_select_db("caidas_sis",$conexion) or die ("Error de conexion con la Base de Datos"     );    
//Pasa el Estado a 0 desactivado 
$upd_Estado 'UPDATE `caidas_sis`.`usuarios` SET `estado` = \'0\' '
$resul1=mysql_query($upd_Estado,$conexion) or die ("Error en la Update");
//fin cambio de estado

foreach ($lines as $line_num => $line) {    
     
$datos explode(","$line); 
//Esta página es la que crea el nuevo usuario en la base de datos con los nuevos datos
//al finalizar la acción se redirecciona a la página principal del administrador

$con2="SELECT id_usuarios FROM `usuarios` where id_usuarios='$datos[2]';";
$resul=mysql_query($con2,$conexion) or die ("Error en la consultaVeri1");
$nr=mysql_num_rows($resul);

if(
$nr==0){
mysql_free_result($resul);

$con "INSERT INTO `caidas_sis`.`usuarios` (`id_us`,`id_usuarios`,`tipo`,`categoria`,`estado`,`edad`,`tipo_edad`,`sexo`, `nombre1`, `nombre2`, `apellido1`, `apellido2`) VALUES ('','$datos[2]', '$datos[1]', '$datos[16]', '1', '$datos[8]', '1', '$datos[7]', '$datos[3]', '$datos[4]','$datos[5]','$datos[6]');";    
$resul3=mysql_query($con,$conexion) or die ("Error al Ingresar el User22 $datos[2] ");

  
 
?>
       <tr>
        <td><?= $datos[1]?></td> 
         
        <td style="background-color:#cccccc;"> <?= $datos[2]?> </td>
        <td><?= $datos[3]  ?> </td>
        <td><?= $datos[4]  ?> </td>
        <td><?= $datos[5]  ?> </td>
        <td><?= $datos[6]  ?> </td>
        <td><?= $datos[7]  ?> </td> 
        <td><?= $datos[8]  ?> </td> 
        <td><?= $datos[16]  ?> </td>        
        </tr>
    <?    
}
else{
$upd2 'UPDATE `caidas_sis`.`usuarios` SET `estado` = \'1\' WHERE `usuarios`.`id_usuarios` = \'$datos[2]\';';
$resul2=mysql_query($upd2,$conexion) or die ("Error en la consultaVeri1");

mysql_free_result($resul2);
}
       } 
//fin foreach
        
mysql_close();
?>
</table>
Como puedo optimizar esto para que no me salga el famoso error

Fatal error: Maximum execution time of 200 seconds exceeded in C:\AppServ\www\CargaUsuarios.php on line 53



Agradezco su ayuda de antemano

Última edición por carloscaliche; 28/11/2008 a las 16:46
  #2 (permalink)  
Antiguo 28/11/2008, 16:55
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: consulta e insertar error

Te recomiendo que hagas uso de un procedimiento almacenado, seria mas optimo.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #3 (permalink)  
Antiguo 28/11/2008, 16:57
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: consulta e insertar error

Cita:
Iniciado por stone_neo Ver Mensaje
procedimiento almacenado,
upsss me perdi y eso como se hace ??
  #4 (permalink)  
Antiguo 28/11/2008, 17:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: consulta e insertar error

Si te pasa eso trata de jugar con la funcion set_time_limit.

Saludos.
  #5 (permalink)  
Antiguo 28/11/2008, 19:28
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: consulta e insertar error

Cita:
Iniciado por GatorV Ver Mensaje
Si te pasa eso trata de jugar con la funcion set_time_limit.

Saludos.
gracias pero como podras ver en el error esta ya configueado en 200 segundos y se ha incrementado sin resultado alguno
  #6 (permalink)  
Antiguo 28/11/2008, 19:56
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: consulta e insertar error

Man como lo que quieres hacer lo veo muy pesado, como te dije mejor seria que hagas un store procedure. Pues yo te recomendarias que te crearas un script php que suba el archivo.txt a una carpeta en tu servidor y luego el Store Procedure se encargue de leer ese archivo y hacer los insert respectivos. Visita este enlace para ver sobre Procedimientos Almacenados en MySQL.

http://www.fpress.com/revista/num1205/art.htm

http://www.nosolocodigo.com/procedim...os-con-mysql-5
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #7 (permalink)  
Antiguo 29/11/2008, 09:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: consulta e insertar error

Cita:
Iniciado por stone_neo Ver Mensaje
Man como lo que quieres hacer lo veo muy pesado, como te dije mejor seria que hagas un store procedure. Pues yo te recomendarias que te crearas un script php que suba el archivo.txt a una carpeta en tu servidor y luego el Store Procedure se encargue de leer ese archivo y hacer los insert respectivos. Visita este enlace para ver sobre Procedimientos Almacenados en MySQL.
Gracias me sirvio de mucho ya que aprendi new cosas pero el problema esta en los otros query en donde se hace la consulta si existe o no si no existe se inserta y si existe se actualiza el estado en la consulta genera el error no se que mas pueda hacer para mejorar eso?? Gracias por la ayuda

el archivo ya esta en el server por eso la ruta jaibana.txt.
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 22:47.