Consume API to BD

0

I am working on my degree project and I have to make a system that works based on an API. This API must be integrated into a database, that is, I must extract all information regarding the company for which I work and integrate it into a local bd. I have tried several ways to do it, but I am faced with the problem that the server detects too many simultaneous requests. My code is as follows:

<?php 
function cambiarFormatoFecha($fechaI){
    $cont = 0;
    while(strtotime($sumarDias)<strtotime(date('d-m-Y'))){
        $sumarDias = date('d-m-Y', strtotime($fechaI. ' + '.$cont.' days'));
        $desarmar  = explode("-",$sumarDias);
        $nuevaFecha = $desarmar[0].$desarmar[1].$desarmar[2];
        $ch = curl_init();
        $mh = curl_multi_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch,CURLOPT_URL,"http://api.mercadopublico.cl/servicios/v1/publico/ordenesdecompra.json?fecha=".$nuevaFecha."&CodigoOrganismo=7106&ticket=DF140AC7-B227-44C7-95DD-FEA0AF61C542");

        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);  
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        $data = curl_exec($ch);
        curl_close($ch);
        $result = json_decode($data,true);
        echo $nuevaFecha."<br>";
        if(is_array($result['Listado']) || is_object($result['Listado'])){
            $h = 0;
            sleep(10);
            foreach ($result['Listado'] as $value) {
                $ch2 = curl_init();
                $mh2 = curl_multi_init();
                curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch2,CURLOPT_URL,"http://api.mercadopublico.cl/servicios/v1/publico/ordenesdecompra.json?Codigo=".$value['Codigo']."&ticket=DF140AC7-B227-44C7-95DD-FEA0AF61C542");
                curl_setopt($ch2,CURLOPT_RETURNTRANSFER,1);
                curl_setopt($ch2, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
                curl_setopt($ch2, CURLOPT_CONNECTTIMEOUT, 5);  
                curl_setopt($ch2, CURLOPT_TIMEOUT, 60);
                $data2 = curl_exec($ch2);
                curl_close($ch2);
                $result2  =json_decode($data2,true);
                if(is_array($result2['Listado']) || is_object($result2['Listado'])){
                    foreach ($result2['Listado'] as $value2) {
                        echo $value2['Codigo']." ".$value2['Nombre']." ".$value2['CodigoLicitacion']." ".$value2['TipoMoneda']."<br>";
                        sleep(10);
                    }
                }
            }
        }
        //sleep(10);
        $cont++;
    }   
}
cambiarFormatoFecha('01-10-2018');
?>

Any ideas / recommendations to do this? It's the first time I've worked with an API, and in such a large project.

    
asked by NightMarch 05.10.2018 в 14:28
source

0 answers