Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Get API ubicacion servidor

Estas en el tema de Get API ubicacion servidor en el foro de PHP en Foros del Web. Hola, les cuento lo que estoy intentando hacer: Tengo un cliente que me dio un API que al consultarla me descarga un file .csv con ...
  #1 (permalink)  
Antiguo 04/04/2015, 11:28
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Get API ubicacion servidor

Hola, les cuento lo que estoy intentando hacer:

Tengo un cliente que me dio un API que al consultarla me descarga un file .csv con los caracteres separados x coma, bla bla.

Yo ese CSV ya lo pude importar a mi Mysql sin problemas seleccionando el file desde una hoja PHP e importandolo.

Ahora mi pregunta es, si hay una manera mas automatica de hacerlo, ya que tengo que consultar esa API cada 5 minutos aprox.

Lo que no logro es guardar el csv en el servidor mediante un cronjob, osea el cron funciona, pero no me guarda el file en el servidor.

Alguien sabe como hacer esto?

Gracias!
__________________
Bye!
  #2 (permalink)  
Antiguo 04/04/2015, 22:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Get API ubicacion servidor

Cita:
pero no me guarda el file en el servidor.
Me imagino que esperas a que adivinemos tu código para decirte exactamente lo que haces mal ¿verdad?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/04/2015, 11:41
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: Get API ubicacion servidor

Ya logre importarlo sin seleccionar el file desde Examinar, el codigo es el siguiente:
Hago algunas validaciones, si esta repetido no lo incluyo y demas...

Código PHP:

$file 
"reservations.csv"
$handle fopen($file,"r"); 
    
     
    do { 

    if (
$data[0] == "122"){$data[0] = "80";}
    if (
$data[0] == "2807"){$data[0] = "81";}
    if (
$data[0] == "2708"){$data[0] = "82";}
    if (
$data[0] == "2799"){$data[0] = "83";}
    if (
$data[0] == "2797"){$data[0] = "84";}
    if (
$data[0] == "2801"){$data[0] = "85";}
    if (
$data[0] == "2800"){$data[0] = "86";}
    if (
$data[0] == "2798"){$data[0] = "87";}
    if (
$data[0] == "7118"){$data[0] = "88";}
    if (
$data[0] == "2819"){$data[0] = "89";}
    if (
$data[0] == "2793"){$data[0] = "90";}
    if (
$data[0] == "2794"){$data[0] = "91";}
    if (
$data[7] == "active"){$data[7] = "";}
    if (
$data[7] == "canceled"){$data[7] = "Cancelada";}
    if (
$data[3] > 14){
    
$turno "2";
    }else{
    
$turno "1";
    }
    
            
$query mysql_query("SELECT * FROM reservas WHERE id_restorando = '$data[1]'");
$result mysql_fetch_assoc($query); 
$num mysql_num_rows($query);
echo 
$num;

    if(
$num// if the record exist, update it 
          

          
    
strtoupper($data[8]);
    
strtoupper($data[9]);

        
mysql_query("UPDATE reservas SET id_resto = '$data[0]',id_restorando = '$data[1]',fecha_res = '$data[2]',hora = '$data[3]',pax = '$data[4]',mensaje = '$data[5]',origen = '$data[6]',estado = '$data[7]',nombre = '$data[8]',apellido = '$data[9]',email = '$data[10]',celular = '$data[11]',turno = '$turno' WHERE id_restorando = '$data[1]'"); 
          }           
    else 
// else insert new record 
          
// else began 


            
mysql_query("INSERT INTO reservas (id_resto, id_restorando, fecha_res, hora, pax, mensaje, origen, estado, nombre, apellido, email, celular, turno) VALUES 
                ( 
                    '"
.addslashes($data[0])."', 
                    '"
.addslashes($data[1])."',
                    '"
.addslashes($data[2])."',
                    '"
.addslashes($data[3])."',
                    '"
.addslashes($data[4])."',
                    '"
.addslashes($data[5])."',
                    '"
.addslashes($data[6])."', 
                    '"
.addslashes($data[7])."',
                    '"
.addslashes(strtoupper($data[8]))."',
                    '"
.addslashes(strtoupper($data[9]))."',
                    '" 
.addslashes($data[10])."',
                    '"
.addslashes($data[11])."',
                    '"
.addslashes($turno)."'
                ) 
            "
); 
// else end  

    
} while ($data fgetcsv($handle,1000,";","'")); 
el problema es que al consultar el API (una simple url con un token) me genera un csv, entonces lo que hice fue un cronjob en mi servidor que consulta esa URL, pero a diferencia de mi pc no me guarda el csv en ninguna ubicacion... no se si me explico...

despues hago otro cronjob que ejecuta la hoja import.php (el codigo de arriba) y listo!

gracias!
__________________
Bye!
  #4 (permalink)  
Antiguo 06/04/2015, 11:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Get API ubicacion servidor

Cita:
el problema es que al consultar el API (una simple url con un token) me genera un csv, entonces lo que hice fue un cronjob en mi servidor que consulta esa URL, pero a diferencia de mi pc no me guarda el csv en ninguna ubicacion... no se si me explico...
Claro, y supongo que tenemos que adivinar dicho código también, ¿verdad?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/04/2015, 12:16
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: Get API ubicacion servidor

No tengo otro codigo, el cron lo hago con una opcion que me habilita el hosting. El tema es que el hosting visita la URL que genera el CSV pero no me lo guarda en ningun lado o no se donde, en cambio si hago una tarea programada con mi windows y visito la URL del API me genera en mi carpeta de descargas el CSV.
No se como hacerlo en el servidor, no tengo acceso a la configuracion de la API, solo accedo a una URL para descargar las reservas.
__________________
Bye!
  #6 (permalink)  
Antiguo 06/04/2015, 12:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Get API ubicacion servidor

¿Podrías mostrar la tarea que ejecutas con el CRON que mencionas?

De verdad tratar de entender tu problema (que en dicho caso ya no tiene nada que ver con PHP) es complicado con lo poco que explicas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/04/2015, 12:55
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: Get API ubicacion servidor

:(

1) desde el cron (creado en el hosting) ejecuto una URL (esta URL es una API que al ingresar genera un csv que se descarga automáticamente)

>Problema
No se guarda en ningun lado ese file, en cambio si lo hago de forma local (en mi pc, se guarda sin problemas).

2) luego el cron ejecuta la hoja import.php (codigo que publique anteriormente) (toma los valores del csv y los importa al mysql)

Espero que se entienda... :S

Gracias!
__________________
Bye!
  #8 (permalink)  
Antiguo 06/04/2015, 12:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Get API ubicacion servidor

¿Entonces tenemos que adivinar la orden del CRON o cómo?

En teoría deberías usar wget o curl para descargar dicha URL, abrirla directamente no sirve.

Sigo diciendo: tu problema ya no tiene que ver con código PHP, pero parece que tampoco quieres ayudarnos a entender.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 06/04/2015, 13:28
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: Get API ubicacion servidor

Ahi lo hice con un curl, gracias!

function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

$returned_content = get_data('http://http://www.ddd.com.ar/api/cliente42322/reservations?access_token=xxxxxxxxxxxxxx&since=201 5-04-05T15:05:05Z');
__________________
Bye!

Etiquetas: api, mysql, servidor, ubicacion
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 08:57.