PHP akış verileri ile nasıl başa çıkılır?

5 Cevap php

(Çoğunlukla), kalıcı bir bağlantı açar ve birçok kullanıcı izlemenizi sağlar Twitter API yöntemleri (birddog, shadow, and follow) bir aile var. Bash cURL ile örnek bağlantı kodu çalıştırmak ve güzel çalışıyor: Ben, belirlediğiniz bir kullanıcı bir tweet yazarken, benim konsolda bir XML akışı olsun.

Benim soru: how can I access data with PHP that isn't returned as a direct function call, but is streamed? Bu veriler düzensiz ve beklenmeyen gelir, ve ben şimdiye kadar ele ne de ben nereye cevap arıyor başlamak için biliyor musunuz bir şey değil. Kütüphaneler veya tuzaklar herhangi bir tavsiye ve açıklamaları duyacağız.

5 Cevap

fopen ve fgets

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

Bu büyük bir (ya da daha iyi) kodu anlamına gelir ama should ihtiyacınız işlevsellik sağlamak gereğidir. Diğer şeyler arasında hata işleme ve veri ayrıştırma eklemek gerekir.

Yani, (ve reconnections, soket kullanımı, TCP back-, vb gibi zor bit işlemek) işler çok daha kolay bu bu gün için kütüphaneler vardır:

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

Ben komut akışı veri dinleyen 30 saniye ~ sonra zaman aşımına olacak eminim. Eğer önemli bir sunucu yükünü bir kez olsun o olmasa bile, açık ve dinleme bağlantı çokluğu dizleri için sunucuyu getirecektir.

Ben sadece iletilerin bir sıra depolayan bir komut dosyası için bir çağrı yapar AJAX çözüm bakmak öneririm. Ben Twitter API olsa tam olarak nasıl çalıştığını emin değilim, bu yüzden tüm tweets almak istendiğinde bir komut dosyası çalıştırmak olabilir eğer ben emin değilim, ya da daemon çeşit varsa bir Kuyruğu tweets append Bu PHP okumak ve AJAX çağrı yoluyla geri iletebilirsiniz.

Phirehose kesinlikle gitmek için yoludur:

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

AJAX kullanarak içine bakarak öneririz. Bir PHP geliştiricisi im değil, ama API için bir AJAX çağrısı kadar tel ve web sayfasını güncellemek düşünürdüm.