Foros del Web » Programando para Internet » PHP »

Duda bucle - Memory Limit

Estas en el tema de Duda bucle - Memory Limit en el foro de PHP en Foros del Web. existe alguna forma de optimizar un bucle para que no consuma tanta memoria? gracias....
  #1 (permalink)  
Antiguo 20/07/2011, 21:33
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Duda bucle - Memory Limit

existe alguna forma de optimizar un bucle para que no consuma tanta memoria?

gracias.
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #2 (permalink)  
Antiguo 20/07/2011, 22:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda bucle - Memory Limit

No existe una formula general para que se aplique a todos los bucles, sin saber con exactitud lo que hace el bucle en cuestión es imposible decirte algo certero.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/07/2011, 11:49
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: Duda bucle - Memory Limit

mira te dejo el code para que lo mires.


Código PHP:
  function CIC_V($api_key$rol$tip_cuaderno$cod_tribunal$crr_IdCuaderno$crr_IdCausa)
  {
      
    
$this->init($api_key);
    if(
$this->fSocket)
    {
                                    
      
$rol_c explode("-"$rol);    
      
      
$data = array();
      
$data['TIP_Consulta'] = "1";
      
$data['TIP_Cuaderno'] = $tip_cuaderno;
      
$data['CRR_IdCuaderno'] = $crr_IdCuaderno;
      
$data['ROL_Causa'] = $rol_c[1];
      
$data['TIP_Causa'] = $rol_c[0];
      
$data['ERA_Causa'] = $rol_c[2];
      
$data['CRR_IdCausa'] = $crr_IdCausa;
      
$data['COD_Tribunal'] = $cod_tribunal;
      
$data['TIP_Informe'] = "1";
      
      
$url "laweb.com";      
            
$get_data $this->compile_post_data($data);        
      
$url_get $url"" .$get_data;
      
          
$this->load_defaults();
          
$this->setopt(CURLOPT_POST0);
          
$this->setopt(CURLOPT_CUSTOMREQUEST,'GET');
          
$this->setopt(CURLOPT_URL$url_get);
          
$result curl_exec($this->fSocket);
          
$this->destroy();
      
      
$html str_get_html($result);

      
$bytes strlen($result);
      
      
$conn mysql_connect("localhost""root""root");
      
mysql_select_db("judiscap");

     foreach(
$html->find('script') as $e)
      {
       
$qtip explode("TIP_Cuaderno.value"$e);

       if (
is_array($qtip) == "Array"):          
           
array_shift($qtip);
           
$nro_arr count($qtip);
          else:
           
$nro_arr "1";
         endif;
      }

        
      foreach(
$html->find('select') as $e)
      {
       
$q explode("<option value="$e);
              
         if (
is_array($q) == "Array"):          
           
array_shift($q);
           
$nro_arr count($q);
          else:
           
$nro_arr "1";
         endif;
      }
    
          
$sql "SELECT * FROM bd_api WHERE rit = '" .$rol"'";          
          
$consulta mysql_query($sql) or die(mysql_error());
          
$data mysql_fetch_array($consulta);
          
          
$nros_cuadernos_bd $data['nros_cuadernos'];
          
$cant_cuadernos_bd $data['cant_cuadernos'];
          
          
$todos_cuadernos = array($nros_cuadernos);
          
$todos_TIP_Cuaderno = array($tip_cuaderno_live);
          
        for(
$i=0$i<=$nro_arr-1$i++):
        
          
$nros_cuadernos ereg_replace("[^0-9]"""$q[$i]);
          
$todos_cuadernos[$i] = $nros_cuadernos
          
          
$tip_cuaderno ereg_replace(".="""$qtip[$i]);
          
$tip_cuaderno_exp explode(";"$tip_cuaderno);
          
$tip_cuaderno_live str_replace("'"""$tip_cuaderno_exp[0]);
          
$todos_TIP_Cuaderno[$i] = trim($tip_cuaderno_live) ;
          
 
          if(
$i === $nro_arr-1): // Ultima iteracion del bucle.
              
$arr_to_string implode("_"$todos_cuadernos);
            
$arr_to_string_TIP_C implode("_"$todos_TIP_Cuaderno);
            
        
              if (
$cant_cuadernos_bd $nro_arr OR $cant_cuadernos_bd == 0):
                
$sql "UPDATE bd_api SET cant_cuadernos = " .$nro_arr" WHERE rit = '" .$rol"'";
                
$consulta mysql_query($sql$conn);
                
                
$sql "UPDATE bd_api SET nros_cuadernos = '" .$arr_to_string"' WHERE rit = '" .$rol"'";
                
$consulta mysql_query($sql$conn);
              endif;
                        
              
$crr_cuadernos explode("_"$arr_to_string);
              
              
$api_key "615wcBop0912MlKppA543AA";
              
              
$books_bd explode("_"$nros_cuadernos_bd);
              
              
$t_arr count($todos_TIP_Cuaderno);
              
              for(
$i=0$i<=$t_arr-1$i++):
                  
                 
$call $this->Revisa_Cuadernos($api_key$todos_cuadernos[$i], $todos_TIP_Cuaderno[$i], $rol$cod_tribunal);
                 
$BYTES_CUADERNO strlen($call['llamada']);
                 
$tot $tot $BYTES_CUADERNO;
                 
                if(!
in_array($todos_cuadernos[$i], $books_bd)):
                    echo 
"CUADERNO NUEVO: " .$rol" " .$todos_cuadernos[$i]. "\n\r";
                endif;
                
              endfor;
          endif;
      endfor;
          
      
        return array(
'bytes_pjud' =>  $tot//$bytes,
                     
'llamada_pud' => $result,
                     
'url' => $url_get,
                     
'escapado_html' => htmlspecialchars($result),
                     
'http_code' => $http_code,
                     
'cookie' => $Cookie_Civil,
                     
'crr_cuadernos_live' => $todos_cuadernos,
                     
'TIP_Cuadernos_Live' => $todos_TIP_Cuaderno);
        }
    return 
0;
  }


gracias.
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl

Etiquetas: bucle, limit
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 17:43.