2009-07-31 24 views
7

Hay una familia de métodos (birddog, shadow, and follow) en la API de Twitter que abre una conexión (principalmente) permanente y le permite seguir a muchos usuarios. He ejecutado el código de conexión de muestra con cURL en bash, y funciona muy bien: cuando un usuario que especifico escribe un tweet, obtengo una secuencia de XML en mi consola.¿Cómo lidiar con la transmisión de datos en PHP?

Mi pregunta es: ¿cómo puedo acceder a los datos con PHP que no se devuelven como una llamada de función directa, sino que se transmiten? Estos datos llegan de forma esporádica e impredecible, y no es algo que haya tratado alguna vez ni sé por dónde empezar a buscar respuestas. Cualquier consejo y descripción de bibliotecas o trampas sería apreciado.

Respuesta

6

fopen y fgets

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

Esto es de ninguna manera genial (o incluso bueno) código pero debe proporcionan la funcionalidad que necesita. Deberá agregar manejo de errores y análisis de datos, entre otras cosas.

+1

Nota a fopen() en PHP 5.0 por lo que necesitará al menos eso. – UnkwnTech

0

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

2

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

Sugiero que eche un vistazo a una solución AJAX que hace una llamada a un script que almacena una cola de mensajes. No estoy seguro de cómo funciona exactamente la API de Twitter, así que no estoy seguro de si se puede ejecutar una secuencia de comandos cuando se solicite para obtener todos los tweets, o si se debe tener algún tipo de daemon anexar los tweets a una cola. que PHP puede leer y pasar de vuelta a través de su llamada AJAX.

+0

Por lo que sé, es solo una conexión. Twitter me envía un XML (¿se llama objeto?) Por mensaje; mi servidor no realiza ninguna consulta activa, solo recibe/escucha. –

+0

Sugiero configurar un Daemon que solo escuche (tal vez escrito en Python, probablemente sería muy simple) y volcar todos los tweets en una base de datos MySQL. Sus scripts PHP pueden leer desde la base de datos. –

2

Hay bibliotecas para esta estos días que hacen cosas mucho más fácil (y manipulan los bits difíciles como reconexiones, manejo de socket, de retroceso TCP, etc.), es decir:

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

Cuestiones relacionadas