Tema: tuberias
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/12/2011, 21:38
Avatar de cadrogui
cadrogui
 
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 5 meses
Puntos: 5
tuberias

hola gente, en busca de la optimizacion de mi script creo que me puede ayudar la creacion de una tuberia para asi ejecutar una llamada curl multiple en una tuberia, ya que asi se ejecutaria como un subproceso aparte, el tema es que el script que iria en la tueria necesita argumentos para correr, es adecuado pasarle los argumentos mediante una llamada curl con post?

lo he realizado de la siguiente manera:

Código PHP:

$tuberia 
= proc_open("curl --data 'api_key=$api_key&CRR_Cuaderno=$CRR_Cuaderno&cookie=$cookie&Tip_Causa=$TIP_Causa&Rol_Causa=$Rol_Causa&Cod_Tribunal=$Cod_Tribunal' 'http://192.168.0.100/bkp/html-scapper-jud/new-engine/Estable/robot/pipe_threads.php'",
  array(
    array(
"pipe","r"), //stdin
    
array("pipe","w"), //stdout
    
array("pipe","w")  //stderr
  
),
  
$pipes);

$salida_pipe = stream_get_contents($pipes[1]);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
$retorno_pipe = proc_close($tuberia);

return 
json_decode($salida_pipe); 
el archivo a ejecutar como proceso independiente:

Código PHP:
include("bd.class.php");
$db = new db_class;
$db->connect();    
    
include(
"LI-engine.php");
$mc = new LegIntAPI();
$mc->getHeaders = false;
$mc->getContent = true;

$cookie = $_POST['cookie'];
$CRR_Cuaderno = explode("_", $_POST['CRR_Cuaderno']);
$TIP_Causa = explode("_", $_POST['Tip_Causa']);
$Rol_Causa = $_POST['Rol_Causa'];
$Cod_Tribunal = $_POST['Cod_Tribunal'];

// realiza la llamada al cuaderno

$url_cuadernos = "http://civil.poderjudicial.cl/CIVILPORWEB/AtPublicoDAction.do?";

$rol_data = explode("-", $Rol_Causa);

$url = "http://civil.poderjudicial.cl/CIVILPORWEB/AtPublicoDAction.do";  

$total_cuadernos = count($CRR_Cuaderno);

$curl_arr = array();
$master = curl_multi_init();

for(
$i = 0; $i < $total_cuadernos; $i++)
{
  
$data = array();
  
$data['TIP_Causa'] = $rol_data['0'];
  
$data['ROL_Causa'] = $rol_data['1'];
  
$data['ERA_Causa'] = $rol_data['2'];
  
$data['COD_Tribunal'] = $Cod_Tribunal;
  
  
$data['TIP_Cuaderno'] = $TIP_Causa[$i]; 
  
  
$data['GLS_Cuaderno'] = "cualquier_cuaderno";
  
$data['CRR_IdCuaderno'] = $CRR_Cuaderno[$i]; 
  
$data['TIP_Informe'] = "1";
  
$data['FLG_Caratula'] = "0";
  
$data['TIP_Cargo'] = "3";
  
$data['COD_Corte'] = "null";
  
$data['FLG_ImpresionTribunal'] = "1";
  
$data['CRR_Cuaderno'] = $CRR_Cuaderno[$i];
  
$data['irAccionAtPublico'] = "Ir+a+Cuaderno";
  
$data['FLG_Vuelta'] = "null";
  
  
$cuaderno_data = $mc->compile_post_data($data);    
  
  
$curl_arr[$i] = curl_init($url);
  
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
  
curl_setopt($curl_arr[$i], CURLOPT_POST, 1);
  
curl_setopt($curl_arr[$i], CURLOPT_POSTFIELDS, $cuaderno_data);
  
curl_setopt($curl_arr[$i], CURLOPT_COOKIEFILE, $cookie);
  
curl_setopt($curl_arr[$i], CURLOPT_FOLLOWLOCATION  ,1);
  
curl_multi_add_handle($master, $curl_arr[$i]);
  
}


// inicio del multi threading ------------------------------------------------------------------------------------------------------------------------    

  
do {
      
$mrc = curl_multi_exec($master, $threads);
  } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
  
  while (
$threads && $mrc == CURLM_OK) {
      if (
curl_multi_select($master) != -1) {
          do {
              
$mrc = curl_multi_exec($master, $threads);
          } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
      }
  }


// busqueda coincidencias en los cuadernos -------------------------------------------------------------------------------------------------------------    


for($i = 0; $i < $total_cuadernos; $i++)
{
  
$results = curl_multi_getcontent  ( $curl_arr[$i]  );

  
curl_multi_remove_handle($master, $curl_arr[$i]);
 
// curl_multi_close($master);

  
  //$consulta = mysql_query($sql_log, $conn);


// buqueda de fechas en el cuaderno

  
$fechas_arr = array();
  
$fechas_arr = $mc->MuestraFecha($results);
  
//array_unshift($fechas_arr, "05/12/2011");

// Nombre del Cuaderno

  
$nombre_cuaderno = $mc->Nombre_Cuaderno($results);

// Archivo asociado al movimiento de la causa    

  
$attachment = $mc->Archivo_Movimiento($results);
   

 
$fecha_actual = date("d/m/Y");

 
$fecha_menos96hs = date('d/m/Y',time()-(4*24*60*60)); // 4 dias
 
$fecha_menos72hs = date('d/m/Y',time()-(3*24*60*60)); // 3 dias
 
$fecha_menos48hs = date('d/m/Y',time()-(2*24*60*60)); // 2 dias
 
$fecha_menos24hs = date('d/m/Y',time()-(24*60*60)); // 1 dia
            
 
if(array_search($fecha_actual, $fechas_arr) === 0):
      
$cuaderno = utf8_encode(substr($nombre_cuaderno,2,-2));
      
$movimiento_bol = "TRUE";    
      
$fecha_mov = $fecha_actual;
      
$archivo_mov_causa = $attachment;
      
$debug = "La fecha actual es el primer elemento del cuaderno: " .$cuaderno. "\r\n";                    
 endif;


 if(
array_search($fecha_menos24hs, $fechas_arr) === 0):               
      
$cuaderno = utf8_encode(substr($nombre_cuaderno,2,-2));
      
$movimiento_bol = "TRUE";        
      
$fecha_mov = $fecha_menos24hs;
      
$archivo_mov_causa = $attachment;    
      
$debug = "La fecha de ayer es el primer elemento del cuaderno: " .$cuaderno. "\r\n";    
 endif;


 if(
array_search($fecha_menos48hs, $fechas_arr) === 0):
      
$cuaderno = utf8_encode(substr($nombre_cuaderno,2,-2));
      
$movimiento_bol = "TRUE";        
      
$fecha_mov = $fecha_menos48hs;
      
$archivo_mov_causa = $attachment;                    
      
$debug = "La fecha antes de ayer es el primer elemento del cuaderno: " .$cuaderno. "\r\n";    
 endif;


 if(
array_search($fecha_menos72hs, $fechas_arr) === 0):
      
$cuaderno = utf8_encode(substr($nombre_cuaderno,2,-2));
      
$movimiento_bol = "TRUE";        
      
$fecha_mov = $fecha_menos72hs;
      
$archivo_mov_causa = $attachment;
      
$debug = "La fecha hace 3 dias es el primer elemento del cuaderno: " .$cuaderno. "\r\n";                        
 endif;


 if(
array_search($fecha_menos96hs, $fechas_arr) === 0):
      
$cuaderno = utf8_encode(substr($nombre_cuaderno,2,-2));
      
$movimiento_bol = "TRUE";        
      
$fecha_mov = $fecha_menos96hs;
      
$archivo_mov_causa = $attachment;                    
      
$debug = "La fecha de hace 4 dias es el primer elemento del cuaderno: " .$cuaderno. "\r\n";    
 endif;

  
  
$BYTES_CUADERNO = strlen($results);
  
$tot = $tot + $BYTES_CUADERNO;
  
}


echo 
'TOTAL BYTES MULTITHREAD: ' .$tot. "\r\n";


$ret = array('llamada' => $content_cuaderno,
             
'URL_POST' => $cuaderno_data,
             
'mje' => $mje,
             
'total_bytes_cuadernos' => $tot,
             
'cuaderno' =>$cuaderno,
             
'movimiento_bol' => $movimiento_bol,
             
'fecha' => $fecha_mov,
             
'archivo_mov_causa' => $archivo_mov_causa,
             
'debug' => $debug);

echo 
json_encode($ret); 
el tema es que no retorna nada...

alguna sugerencia..

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

http://www.cocert.cl