Tema: sql colgado
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/11/2010, 07:49
abcdefghi
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: sql colgado

Hay que realizar una mayor investigación, donde están los "inserts", el finish es útil en sentencias preparadas "prepare", la tuya es un todo en uno por lo que nada tiene que ver.

El problema no será que tienes muchos resultados? tal vez una consulta preparada te ayude más.

Código PHP:
Ver original
  1. # preparamos la consulta
  2. my $personal = $dbh->prepare('SELECT a.id FROM Personas2 a WHERE exists (SELECT 1 FROM atributos b WHERE a.id = b.cod_atributo AND b.ind_proc_docto = ? AND b.id_tipo_atributo = ? AND d b.id_dueno = ?)') || die $self->error($self->{dbh}->errstr);
  3.     # Personas2 es una vista de una tabla en otra BBDD, pero en el mismo servidor.
  4.  
  5. # Ejecutamos la consulta y enviamos los datos a reemplazar.
  6. $personal->execute($self->{ind_proc_doc},$tipo,$self->{dueno});
  7.  
  8.  
  9.     my $pers_resp=0;
  10.     my @array;
  11.  
  12.     while (my $pers = $personal->fetchrow_hashref()){
  13.        
  14.         my $emp = new SBMP::Empleado($pers->{id});
  15.         if ($visualizacion){
  16.             push @array,&fixcase($emp->nombre);
  17.         } else {
  18.             print Tr(
  19.                         td({-class=>"bordercell", -width=>'100%'},&fixcase($emp->nombre))
  20.                     )."\n";
  21.             $pers_resp++;
  22.         }
  23.     }
  24.  
  25. # eliminamos la consulta preparada
  26. $personal->finish();

A mi punto de vista y por la forma de programación es más probable que el problema sea un "circular reference" y te producta una "Leak Memory".

En principio en ese código no veo nada a prima facie, que es lo que te está sucediendo, cuando pasa, cuanto tiempo o veces en ejecución estuvo antes de fallar, cuanta memoria consume, etc.

Última edición por abcdefghi; 13/11/2010 a las 08:16