Foros del Web » Programando para Internet » PHP »

problema tuberias y cron

Estas en el tema de problema tuberias y cron en el foro de PHP en Foros del Web. hola gente, el script si lo ejecuto desde la terminal me funciona bien y retorna los valores pero cuando lo ejecuta cron, no retorna valores, ...
  #1 (permalink)  
Antiguo 29/12/2011, 11:18
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
problema tuberias y cron

hola gente, el script si lo ejecuto desde la terminal me funciona bien y retorna los valores pero cuando lo ejecuta cron, no retorna valores,

la funcion:

Código PHP:
  function Revisa_Cuadernos($api_key, $cookie, $CRR_Cuaderno, $TIP_Causa, $Rol_Causa, $Cod_Tribunal)
  {
    
$this->init($api_key);
    if(
$this->fSocket)
    {
    
    
$tuberia = proc_open("php pipe_threads.php $api_key $CRR_Cuaderno $cookie $TIP_Causa $Rol_Causa $Cod_Tribunal",
                         
      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);
    
    }
 return 
0;    
} 

la tuberia "pipe_threads.php"

Código PHP:
$cookie = $argv[3];
$CRR_Cuaderno = explode("_", $argv[2]);
$TIP_Causa = explode("_", $argv[4]);
$Rol_Causa = $argv[5];
$Cod_Tribunal = $argv[6];


// 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 -------------------------------------------------------------------------------------------------------------    

if($cierre_bucle != true):

    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);
    
    
// buqueda de fechas en el cuaderno
    
      
$fechas_arr = array();
      
$fechas_arr = $mc->MuestraFecha($results);
      
    
// Nombre del Cuaderno
    
      
$nombre_cuaderno = $mc->Nombre_Cuaderno($results);
    
    
// Archivo asociado al movimiento de la causa    
    
      
$attachment = $mc->Archivo_Movimiento($results);
      
    
// Busqueda de la fecha actual dentro de las fechas del cuaderno
        
     
$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";    
          
$cierre_bucle = true;
     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";    
          
$cierre_bucle = true;
     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";    
          
$cierre_bucle = true;
     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";        
          
$cierre_bucle = true;
     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";    
          
$cierre_bucle = true;
     endif;
    
      
      
$BYTES_CUADERNO = strlen($results);
      
$total_bytes = $total_bytes + $BYTES_CUADERNO;
      
    }
endif;

$ret = array('total_bytes_cuadernos' => $total_bytes,
             
'cuaderno' =>$cuaderno,
             
'movimiento_bol' => $movimiento_bol,
             
'fecha' => $fecha_mov,
             
'archivo_mov_causa' => $archivo_mov_causa,
             
'debug' => $debug);


//$ret = array($cookie, $CRR_Cuaderno, $TIP_Causa, $Rol_Causa, $Cod_Tribunal);

echo json_encode($ret);
?> 
no logro comprender del por que este funcionamiento, alguna sugerencia?

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

http://www.cocert.cl
  #2 (permalink)  
Antiguo 29/12/2011, 11:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 18 años, 6 meses
Puntos: 2534
Respuesta: problema tuberias y cron

Yo creo que la pregunta sería, ¿como ejecutas el mismo script desde cron y consola?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/12/2011, 11:31
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
Respuesta: problema tuberias y cron

cual es la diferencia?
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #4 (permalink)  
Antiguo 29/12/2011, 11:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 18 años, 6 meses
Puntos: 2534
Respuesta: problema tuberias y cron

Cita:
Iniciado por cadrogui Ver Mensaje
cual es la diferencia?
Eso es lo que yo te estoy preguntando.

Muestra el comando que usas con el CRON y muestra el comando que usas con la terminal.

¿Hay diferencias?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/12/2011, 11:37
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
Respuesta: problema tuberias y cron

cron:

php -f /home/legalint//rob/robot_LegalInt.php

terminal

php -f /home/legalint//rob/robot_LegalInt.php

he notado que si desde la consola ejecuto el script el otro directorio no corre, pero si lo ejecuto desde el mismo directorio donde esta el script funciona, pero en cron nada, para ver el tema del directorio hice un chmod +x a un archivo rob

rob -run

donde el argumento run hace cd directorio del script y el php -f /home/legalint/public_html/robot/robot_LegalInt.php


y cuando corri desde cron /usr/local/bin/robot -run, me dijo esto: TERM environment variable not set.
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #6 (permalink)  
Antiguo 29/12/2011, 12:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 18 años, 6 meses
Puntos: 2534
Respuesta: problema tuberias y cron

Ejecuta `php -i` desde CRON y terminal para comparar ambos resultados.

Es posible que como estás ejecutando desde tu usuario en la terminal se precargue un environment diferente al que se carga bajo el usuario de los CRONjobs.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 29/12/2011, 12:17
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
Respuesta: problema tuberias y cron

http://www.legalintelligence.cl/tmp/
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #8 (permalink)  
Antiguo 29/12/2011, 12:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 18 años, 6 meses
Puntos: 2534
Respuesta: problema tuberias y cron

¿Por qué desde el cron devuelve el phpinfo() como HTML?

Eso no debería ser así, para empezar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 29/12/2011, 12:27
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
Respuesta: problema tuberias y cron

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

http://www.cocert.cl
  #10 (permalink)  
Antiguo 29/12/2011, 12:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 18 años, 6 meses
Puntos: 2534
Respuesta: problema tuberias y cron

Pues por ahí debes comenzar a indagar, no es normal que desde la consola te de un resultado para consola y desde el cron (que debe ser consola también) te entregue el HTML como si fuera la versión CGI y no CLI de php.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 29/12/2011, 12:32
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
Respuesta: problema tuberias y cron

Ok investiga ese tema y te cuento

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

http://www.cocert.cl
  #12 (permalink)  
Antiguo 01/01/2012, 14:01
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 23 años, 4 meses
Puntos: 5
Respuesta: problema tuberias y cron

Tengo esta info: PHP is running as CGI module. Tengo que recompilar php como modulo de apache?

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

http://www.cocert.cl

Etiquetas: cron
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 15:54.