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.