Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2015, 12:09
-thor-
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 20 años, 8 meses
Puntos: 3
duda con curl en php

hola, buscando en internet encontre este codigo que me permite obtener la uf desde la pagina www.sii.cl, y solo es necesario enviar el año y dia. Mi problema es cuando creo un

objeto de la clase UF en mi pagina para desplegar la uf del dia. Cuando la pagina sii.cl esta sin problemas funciona todo bien y se puede visualizar la uf diaria, pero si la

pagina www.sii.cl esta caida en mi pagina se despliega el mensaje die("Error obteniendo datos via cURL"); que es parte de la clase y no se puede realizar ninguna operacion mas

en mi web.

Mi consulta es si existe alguna forma de validar curl cuando este caida la pagina http://www.sii.cl para que la mia siga funcionando y no se caiga.

Gracias
Código PHP:

class Uf {

    
/**
     *
     * @var private
     */
    
private $url;

private function 
getFromSII($anyo) {
        
$this->anyo = $anyo;
        
$this->url = "http://www.sii.cl/pagina/valores/uf/uf$anyo.htm";
        
$ch = curl_init("$this->url");
        
curl_setopt($ch, CURLOPT_HEADER, 1);
        
curl_setopt($ch, CURLOPT_POST, 0);
        
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        
$output = curl_exec($ch) or die("Error obteniendo datos via cURL");
        
curl_close($ch);
        
$output = explode("<table", $output);
        
$output = explode("<tr>", $output[1]);
        
$arr_dia = array();
        for (
$i = 2; $i < count($output); $i++) {
            
$tmp = explode("<th style='text-align:center;'>", $output[$i]);
            
$tmp = explode("</th>", $tmp[1]);
            
$tmp2 = explode("<td style='text-align:right;'>", $output[$i]);
            for (
$o = 0; $o < count($tmp2); $o++) { //aqui es para limpiar los datos
                
$tmp2[$o] = str_replace("\n   ", "", str_replace("</td>", "", $tmp2[$o]));
                
$tmp2[$o] = str_replace("\n", "", $tmp2[$o]);
                
$tmp2[$o] = str_replace("</tr>", "", $tmp2[$o]);
                
$tmp2[$o] = str_replace("&nbsp;", "0", $tmp2[$o]);
                
$tmp2[$o] = str_replace(".", "", $tmp2[$o]);
                
$tmp2[$o] = str_replace(",", $this->separador_decimal, $tmp2[$o]); //aqui cambiamos el separador decimal
                
$tmp2[$o] = str_replace("<th style='text-align:center;'>", "", $tmp2[$o]);
                
$tmp2[$o] = str_replace("</th>", "", $tmp2[$o]);
            }
            
$arr_dia[$tmp[0]] = $tmp2;
        }
        
//caso especial 31-12
        
$tmp = $arr_dia[31][12];
        
$tmp = explode("\r", $tmp);
        
$arr_dia[31][12] = $tmp[0];
        
$this->data = $arr_dia;
    } 
en mi pagina la llamo de esta forma para desplegar la uf diaria y funciona todo bien cuando la pagina del sii.cl no esta caida.

Código PHP:
include("UF.php");
$uf = new Uf(2012); 
echo 
$uf->getDate('01-01-2012')//TRAERIA LA UF DEL DIA 1 DE ENERO


//otras operaciones del formulario de ingreso