Acceder a Streaming API de PHP
Para aquellos que necesiten realizar aplicaciones sobre Twitter que tiren de la Streaming API, por ejemplo monitorear o que se dice de una marca, les va a venir muy bien este código:
set_time_limit(0);
$query_data = array('track' => 'lo que quieres buscar');
$user = 'username'; // replace with your account
$pass = 'password'; // replace with your account
$fp = fsockopen("stream.twitter.com", 80, $errno, $errstr, 30);
if(!$fp){
print "$errstr ($errno)\n";
} else {
$request = "GET /1/statuses/filter.json?" . http_build_query($query_data) . " HTTP/1.1\r\n";
$request .= "Host: stream.twitter.com\r\n";
$request .= "Authorization: Basic " . base64_encode($user . ':' . $pass) . "\r\n\r\n";
fwrite($fp, $request);
while(!feof($fp)){
$json = fgets($fp);
$data = json_decode($json, true);
if($data){
//
// Do something with the data!
//
}
}
fclose($fp);
}
El parámetro track se puede cambiar por follow (usando IDs numéricos) para saber que dice algún usuario y que dicen los que le mencionan o retuitean.
Vía / AF-Design
Interesante estudio sobre comparativa de sentencias en PHP5 que obtienen el mismo resultado, para conocer cual de ellas es la más rápida. Por ejemplo: es más rápido concatenar una cadena a una variable usando el punto (.) que incluyéndo la variable entre comillas dobles, para expresiones regulares es más rápido usar preg_match que eregi, es 8 veces más rápido usar explode que split. También es una buena referencia para saber como hacer lo mismo de distintas formas. Pero lo que más me ha sorprendido es que comparando con PHP4 las expresiones regulares se han vuelto más lentas (casi 7 veces más rápido en PHP4 que en PHP5), lo cual me hace pensar que o bien es debido a una mejora que completa las expresiones regulares, o antes no se hacÃan muy bien, porque ir a peor no tiene mucho sentido.

Buen articulo, pero es necesario ingresar un user y pass? no puede trabajar sin login? que pasa en ese caso con el control de Oauth que pide twitter para las cuentas?
No necesita OAuth porque tira de Basic Auth, yo también creÃa que iba a ser necesario OAuth, pero lo he probado y funciona perfectamente.
Saludos
Se puede también partir de: Phirehose (https://github.com/fennb/phirehose)
Gracias por el enlace, Nigeon
A mi no me funciona, metas el usuario que metas siempre entra en el bucle while y nunca entra en el bloque del if.
cmaciasg, que es lo que pones sustituyendo a ‘lo que quieres buscar’ ? usa “facebook” o un TT de Twitter
Saludos
$query_data = array(‘track’ => ‘facebook’);
Lo he hecho y sigue igual, no me arroja nada. Pero ya te decÃa, que se comporta igual poniendo el username y la password que quieras.
El problema es que fgets($fp); no me devuelve nada.
Pregunta tonta, pero has usado un usuario y contraseña válidos?
Has mirado si te devuelve algo en $errstr?
Saludos