[Php-avanzado] consulta cURL

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Jun 4 19:20:09 ART 2013


Esa respuesta no es una matriz: está en formato JSON.
Parseala con las funciones de JSON en PHP y te devuelve un vector.

El mar, 04-06-2013 a las 19:02 -0300, Cesar Gimenez Lascano escribió:
> me puse a probar con curl, en el curso habíamos visto que es un
> programa externo, pero existe una biblioteca php tmb no? me podrían
> dar una mano para recuperar los datos de la api con curl y lo que mas
> se me complico, guardar el dato "text" de la respuesta que es una
> matriz. Gracias!!
> 
> 
> URL: 
> https://api.foursquare.com/v2/venues/VENUE_ID/tips
> 
> 
> 
> formato de la respuesta:
> 
> 
> {
> 
> response: {
>       * tips: {
>               * count: 305
>               * items: [
>                       * {
>                               * id: "51a762a4498e136ef3a77f2b"
>                               * createdAt: 1369924260
>                               * text: "I don't care if you get the
>                                 beloved blueberry pancakes or not, but
>                                 the must have here is the SUGAR-CURED
>                                 BACON!"
>                               * canonicalUrl: "https://foursquare.com/item/51a762a4498e136ef3a77f2b"
>                               * likes: {
>                                       * count: 0
>                                       * groups: [ ]
>                                 }
>                               * like: false
>                               * todo: {
>                                       * count: 0
>                                 }
>                               * user: {
>                                       * id: "13722555"
>                                       * firstName: "Mehmetali"
>                                       * lastName: "Y."
>                                       * gender: "male"
>                                       * photo: {
>                                               * prefix: "https://irs3.4sqi.net/img/user/"
>                                               * suffix: "/DJUPSJ43K1EJ4ZHF.jpg"
>                                         }
>                                 }
>                         }
> 
> 
> El 4 de junio de 2013 16:12, Cesar Gimenez Lascano
> <cesargimenezlascano en gmail.com> escribió:
>         Gracias Matias x toda la info!! creo lo mejor sera llamar a
>         las apis con CURL desde el lado del servidor. Es importante lo
>         que decís que hay que tratar de no depender de servicios
>         externos y no es un buen uso de AJAX el que estaba haciendo
>         como dijo Leo. Veremos como sale todo el sábado, dps te
>         comento, saludo grande y gracias x la ayuda y el tiempo!!!
>         
>         
>         El 4 de junio de 2013 08:55, Matias Gea <matigea en gmail.com>
>         escribió:
>         
>                 Buenas!
>                 
>                 
>                 Exactamente a eso me refería. A pasar al server parte
>                 del proceso que ahora hace el cliente (algunas de las
>                 peticiones). Se puede llamar a las api fácilmente con
>                 curl o directamente file_get_contents o fopen.
>                 
>                 
>                 Igualmente conozco el paño y sé que algunas de las
>                 apis son bastante limitadas.
>                 
>                 
>                 Si hacés las peticiones desde el server, es necesario
>                 hacer caché. Uno de los parámetros que utilizan las
>                 apis para identificar el cliente es la ip (en especial
>                 las api que no requieren api key). Si hacés muchas
>                 peticiones desde la misma ip en un período corto de
>                 tiempo, te banean. Por ejemplo, si una api tiene un
>                 máximo de 100 peticiones por hora por ip, si no
>                 cacheas y te entran 110 clientes al sitio, te bloquean
>                 la api.
>                 
>                 
>                 Por esto también a veces es una buena opción que el
>                 haga la petición sea el cliente, te evitás los límites
>                 de algunas api, pero a costa de hacer muchas más
>                 peticiones y depender de la estabilidad de servicios
>                 externos (algunas apis, como la de facebook o twitter,
>                 pueden hacer que tu página cargue hasta 10 segundos
>                 más tarde, lo que rompe estadísticas, experiencia de
>                 usuario, etc.).
>                 
>                 
>                 Por eso es un caso a analizar, para no perder
>                 funcionalidad, pero maximizar la experiencia de
>                 usuario y recursos.
>                 
>                 
>                 Saludos!
>                 
>                 
>                 PD: Quiero saber que resuelven el sábado!
>                 
>                 
>                 
>                 
>                 
>                 
>                 El 3 de junio de 2013 16:04, Cesar Gimenez Lascano
>                 <cesargimenezlascano en gmail.com> escribió:
>                 
>                         Gracias Leo! voy a repensar algunas cosas y
>                         seguimos dialogando el sábado. Gracias x el
>                         tiempo, nos vemos!!
>                         
>                         
>                         El 3 de junio de 2013 15:49, Leonardo Tadei -
>                         Pegasus Tech Supply
>                         <leonardot en pegasusnet.com.ar> escribió:
>                         
>                                 Hola Cesar,
>                                 
>                                         si los datos se actualizan
>                                 frecuentemente, no veo en tu código
>                                 cómo se
>                                 cargan más de una vez luego de cargada
>                                 la página.
>                                         La llamada AJAX tiene sentido
>                                 para recargar una parte de la página,
>                                 pero acá no hay un timer ni nada (o no
>                                 lo veo) que haga que se recarguen
>                                 las cosas.
>                                         No conozco la interfaz, pero
>                                 por el código parece que hay botones
>                                 con
>                                 cada categoría (alojamientos, bares,
>                                 restaurantes, comercios y puntos de
>                                 interés) y que al clickear cada botón,
>                                 mostrar esa categoría y dejás de
>                                 mostrar las otras.
>                                         Al no recargarse
>                                 automáticamente y al no mostrarse más
>                                 de una capa a la
>                                 vez, la aproximación KISS sería tener
>                                 una página para cada cosa y que
>                                 directamente se cargue la que
>                                 corresponde.
>                                         Luego en cada página ejecutás
>                                 en PHP lo que sea que haga
>                                 json/cargarAloj.php
>                                 json/cargarBares.php
>                                 etc
>                                         y generás por ejemplo un
>                                 vector JS con los datos; en el cliente
>                                 solo te
>                                 encargás de mostrar esos puntos.
>                                 
>                                         Esto es a lo que apuntaba
>                                 Matías: podrías hacer lo mismo sin
>                                 usar par
>                                 nada AJAX y no pelearte con la
>                                 race-condition que se te está
>                                 generado.
>                                 
>                                         Por otra parte, posiblemente
>                                 debas hacer que los:
>                                 json/cargarAloj.php
>                                 json/cargarBares.php
>                                 etc
>                                         guarden la respuesta y vayan a
>                                 buscar cosas nuevas solo cada X
>                                 minutos,
>                                 para no saturar la API con peticiones
>                                 (y que te echen a patadas)
>                                 
>                                         Supongo que como la cosa pasó
>                                 de sintaxis a cuestiones del planteo
>                                 del
>                                 algoritmo, las veremos el sábado que
>                                 viene cuando te des una vuela por
>                                 el curso.
>                                 
>                                         Saludos cordiales!
>                                 
>                                 
>                                 
>                                 El lun, 03-06-2013 a las 13:47 -0300,
>                                 Cesar Gimenez Lascano escribió:
>                                 > Volviendo al código, si sugerís que
>                                 caRgue los datos de las dos
>                                 > llamadas remotas (foursquare,
>                                 twitter) a la BD, estos datos se
>                                 > actualizan frecuentemente, tmb para
>                                 obtenerlos utilizo las ids
>                                 > guardadas en mi BD, no veo como
>                                 podría hacerlo de esa forma....
>                                 > saludos y gracias!!!
>                                 >
>                                 >
>                                 > El 3 de junio de 2013 13:40, Cesar
>                                 Gimenez Lascano
>                                 > <cesargimenezlascano en gmail.com>
>                                 escribió:
>                                 >         Uh! perdón a mi por el error
>                                 de tipeo!! creo que me traiciono
>                                 >         el subconciente porque esta
>                                 implementacion se me complico
>                                 >         bastante....disculpas...
>                                 >
>                                 >
>                                 >         El 3 de junio de 2013 12:37,
>                                 Leonardo Tadei - Pegasus Tech
>                                 >         Supply
>                                 <leonardot en pegasusnet.com.ar>
>                                 escribió:
>                                 >
>                                 >                 Hola Cesar,
>                                 >
>                                 >                         perdón por
>                                 el error de tipeo.
>                                 >                         Debería
>                                 decir "devolverlo ya caRgado desde el
>                                 >                 servidor"
>                                 >
>                                 >                         Salu2
>                                 >
>                                 >
>                                 >                 El dom, 02-06-2013 a
>                                 las 11:28 -0300, Cesar Gimenez
>                                 >                 Lascano escribió:
>                                 >                 > Gracias Leo!
>                                 disculpame, a que te referís con
>                                 >                 "devolverlo ya
>                                 cagado
>                                 >                 > desde el
>                                 servidor"? a guardar los datos
>                                 recibidos de
>                                 >                 las llamadas a
>                                 >                 > las apis en la
>                                 base de datos? gracias x la ayuda.
>                                 >                 saludos!!
>                                 >                 >
>                                 >                 >
>                                 >                 > El 1 de junio de
>                                 2013 19:15, Leonardo Tadei -
>                                 >                 Pegasus Tech Supply
>                                 >                 >
>                                 <leonardot en pegasusnet.com.ar>
>                                 escribió:
>                                 >                 >         Cesar:
>                                 >                 >
>                                 >                 >
>                                 Quiero volver a una cuestión que
>                                 >                 Matías platea muy
>                                 >                 >
>                                 correctamente: no
>                                 >                 >         tiene
>                                 sentido hacer varias llamadas AJAX en
>                                 >                 un bucle, porque
>                                 >                 >         si te hace
>                                 >                 >         falta todo
>                                 esto, devolvelo ya cargado desde
>                                 >                 el servidor y
>                                 >                 >         listo!
>                                 >                 >
>                                 Más allá del problema de sintaxis
>                                 >                 que haya, no es un
>                                 >                 >         uso
>                                 razonable de
>                                 >                 >         AJAX, ya
>                                 que es más lento todo esto que
>                                 >                 cargar los valores
>                                 >                 >         desde el
>                                 >                 >         principio.
>                                 >                 >
>                                 >                 >
>                                 Acordate del "principio de
>                                 >                 programación
>                                 KISS" !!!
>                                 >                 >
>                                 
>                                 
>                                 
>                                 
>                                 --
>                                 Leonardo Tadei
>                                 leonardot en pegasusnet.com.ar
>                                 Web: http://leonardo.tadei.com.ar
>                                 Firma pública:
>                                 http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>                                 
>                                 _______________________________________________
>                                 Php-avanzado mailing list
>                                 Php-avanzado en pato2.fi.mdp.edu.ar
>                                 http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>                                 
>                         
>                         
>                         
>                         _______________________________________________
>                         Php-avanzado mailing list
>                         Php-avanzado en pato2.fi.mdp.edu.ar
>                         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>                 
>                 
>                 
>                 
>                 -- 
>                 Matias Fernando Gea
>                 matigea en gmail.com
>                 http://www.mfgea.com.ar
>                 
>                 _______________________________________________
>                 Php-avanzado mailing list
>                 Php-avanzado en pato2.fi.mdp.edu.ar
>                 http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         
>         
> 
> 
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado