2009-07-31 13 views
7

Twitter API'sinde (çoğunlukla) kalıcı bir bağlantı açan ve birçok kullanıcıyı izlemenize olanak tanıyan bir yöntem ailesi (birddog, shadow, and follow) vardır. Örnek bağlantı kodunu bash içinde cURL ile çalıştırdım ve güzel çalışıyor: ben belirttiğim bir kullanıcı bir tweet yazdığında, konsolumda bir XML akışı alıyorum.PHP'de akış verileri nasıl ele alınır?

Sorum şu ki: Doğrudan işlev çağrısı olarak geri alınmayan, ancak akış halinde olan PHP'ye nasıl erişebilirim? Bu veriler, düzensiz ve öngörülemez bir şekilde ortaya çıkıyor ve bu, daha önce ele aldığım bir şey değil, cevap aramaya nereden başlayacağımı da bilmiyorum. Kütüphanelerin veya tuzakların tavsiyeleri ve açıklamaları takdir edilecektir.

cevap

6

fopen ve fgets olduğunu. Diğer şeyler arasında hata işleme ve veri ayrıştırma eklemeniz gerekecektir.

+1

Not Akış desteği fopen eklendi() PHP 5.0 ile böylece en azından gerekecektir. – UnkwnTech

0

AJAX'ı kullanmayı önerebilirim. Ben bir PHP geliştiricisi değilim, ama bir AJAX çağrısını API'ye bağlayabileceğinizi ve web sayfanızı güncelleyebileceğinizi düşünürdüm. hiçbir büyük (hatta iyi) kod anlamına gelir ama gerektiği İhtiyacınız işlevselliği sağlamak tarafından

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

Bu

2

Komut dosyanızın, akıştaki veriyi 30 saniye dinledikten sonra zaman aşımına uğradığından eminim. Olmasa bile, önemli bir sunucu yükü aldığınızda, açık ve dinleme bağlantılarının sayısı, sunucuyu dizlerine getirecektir.

Sadece bir Kuyruk iletisini depolayan bir komut dosyasına çağrı yapan bir AJAX çözümüne bakmanızı öneririm. Twitter API'sinin tam olarak nasıl çalıştığından emin değilim, bu yüzden tüm tweet'leri almanız istendiğinde bir komut dosyası çalıştırıp çalıştıramayacağınızdan emin değilim, ya da bir çeşit daemonun tweet'leri bir Kuyruğa eklemeniz gerektiğinden emin değilim PHP'nin AJAX çağrısıyla okuyabildiği ve geri dönebileceği.

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

+0

Bildiğim kadarıyla, sadece bir bağlantı. Twitter bana mesaj başına bir XML (bir nesne mi denir?) Gönderir; sunucum etkin sorgulama yapmıyor, sadece alıcı/dinliyor. –

+0

Sadece dinleyen (belki Python'da yazılmış, muhtemelen çok basit) ve tüm tweet'leri bir MySQL veritabanına dökülen bir Daemon kurmanızı öneririm. PHP betikleriniz daha sonra veritabanından okuyabilir. –

2

yani çok daha kolay şeyler yapmak (ve vb ReConnections, soket elleçleme, TCP back-off gibi zor bitlerini işlemek) Bu bu gün kütüphaneler vardır gitmek:

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

0

Phirehose kesinlikle yoludur: