[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