Pregunta

Hay una familia de métodos ( birddog, shadow y follow ) en la API de Twitter que abre una conexión (en su mayoría) permanente y le permite seguir a muchos usuarios. Ejecuté el código de conexión de muestra con cURL en bash, y funciona bien: cuando un usuario que especifico escribe un tweet, obtengo una secuencia de XML en mi consola.

Mi pregunta es: ¿cómo puedo acceder a los datos con PHP que no se devuelve como una llamada de función directa, sino que se transmite? Estos datos llegan de forma esporádica e impredecible, y no es algo que haya nunca he tratado ni sé por dónde empezar a buscar respuestas. Se agradecería cualquier consejo y descripción de bibliotecas o dificultades.

¿Fue útil?

Solución

fopen y fgets

<?php
$sock = fopen('http://domain.tld/path/to/file', 'r');
$data = null;
while(($data = fgets($sock)) == TRUE)
{
    echo $data;
}
fclose($sock);

Este no es un código excelente (o incluso bueno) pero debe proporcionar la funcionalidad que necesita. Deberá agregar el manejo de errores y el análisis de datos, entre otras cosas.

Otros consejos

Estoy bastante seguro de que su secuencia de comandos expirará después de ~ 30 segundos de escuchar los datos en la transmisión. Incluso si no lo hace, una vez que obtenga una carga significativa del servidor, la gran cantidad de conexiones abiertas y de escucha pondrá al servidor de rodillas.

Sugeriría que eche un vistazo a una solución AJAX que realiza una llamada a un script que solo almacena una Cola de mensajes. Sin embargo, no estoy seguro de cómo funciona exactamente la API de Twitter, así que no estoy seguro de si puede ejecutar un script cuando se le solicite obtener todos los tweets, o si tiene que tener algún tipo de demonio que agregue los tweets a una cola que PHP puede leer y transferir a través de su llamada AJAX.

Hay bibliotecas para esto en estos días que hacen las cosas mucho más fáciles (y manejan los bits difíciles como las reconexiones, el manejo de sockets, el retroceso de TCP, etc.), es decir:

http://code.google.com/p/phirehose/

Sugeriría buscar usar AJAX. No soy un desarrollador de PHP, pero creo que podría conectar una llamada AJAX a la API y actualizar su página web.

Phirehose es definitivamente el camino a seguir:

http://code.google.com/p/phirehose/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top