2012-03-13 41 views
0

我發現這個代碼 (完整版這裏http://blog.loicg.net/developpement-web/lire-twitter-stream-php-curl停止JSON流

function read_the_stream($sTrackingList){ 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,'https://stream.twitter.com/1/statuses/filter.json'); 
curl_setopt($ch,CURLOPT_USERPWD,TWITTER_LOGIN.':'.TWITTER_PASSWORD); 
curl_setopt($ch, CURLOPT_NOBODY, 0); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_USERAGENT, ''); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Twitter-Client: ItsMe','X-Twitter-Client-Version: 0.1','X-Twitter-Client-URL: http://rien.net/')); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS,"track=".$sTrackingList); 
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'write_callback'); 

curl_exec($ch); 
curl_close($ch); 
} 

這對我的工作,但現在我不知道如何阻止它(爲使測試太可怕了,我的新的PHP文件沒有解釋!)

回答

0

你應該把這段代碼放在一個不在網頁上執行的腳本中(比如一個守護進程),或者你不應該使用這個流。

如果您只想獲得100條推文,那麼請使用其他一些Twitter API。

如果你想停止按鈕,可以考慮:

  • 有另一個腳本填充一些數據庫(或類似的Redis或ActiveMQ的隊列),然後你可以使用AJAX
  • 您的網頁獲得自己的流
  • 只需使用AJAX調用讀取供稿的腳本即可。
+0

我可以在共享服務器上創建一個守護進程。我想檢測新的tweet何時到達,所以流是唯一的解決方案或每小時進行350次檢測(不好玩)。 任何解決方案在twitter上說,停止運行此請求? – 2012-03-13 17:06:08

+0

呃....你可以在叉子上運行流,但這並不容易。如果您分叉,您可以隨時關閉工作,以便自動關閉流。另一種更好的解決方案是有一個命令行腳本(守護進程),它將不間斷地查詢Twitter流,並填充一些數據存儲,並使用AJAX每5秒查詢一次自己的數據存儲。爲什麼你想不加思索地停止請求? – roychri 2012-03-13 17:16:14