基于主题标签的总推文计数器

时间:2011-07-16 09:35:57

标签: php mysql twitter

我正在根据php中包含特定主题标签的当前推文计数构建一个事件。 在主页面上,我有一个计数器,上面写着:“到目前为止的推文:xxx”。我用过这个php脚本:

global $total, $hashtag;
$hashtag = '#somehashtag';
$total = 0;
function getTweets($hash_tag, $page) {
   global $total, $hashtag;
   $url = 'http://search.twitter.com/search.json?q='.urlencode($hash_tag).'&';
   $url .= 'page='.$page;    
   $ch = curl_init($url);
   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
   $json = curl_exec ($ch);
   curl_close ($ch);

   $json_decode = json_decode($json);        
   $total += count($json_decode->results);    
   if($json_decode->next_page){
      $temp = explode("&",$json_decode->next_page);        
      $p = explode("=",$temp[0]);                
      getTweets($hashtag,$p[1]);
   }        
}   
getTweets($hashtag,1);

接下来,我将结果保存在我的数据库中:

$updateCount = "UPDATE tweets SET currentcount = '$total'";   
$doQuery = mysql_query($updateCount, $con) or die(mysql_error());

此脚本由cronjob运行,每2分钟触发一次脚本。 它工作正常。但是这个脚本只返回1500条推文,因为twitter不再允许。

我怎样才能跟踪当前的推文数量?我知道没有办法超越twitter api的最大推文。但也许通过时间或数据库检查? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

我会这样做:

  • 使用当前计数保存您在数据库中获得的最后一条推文ID。
  • 在下一次运行中,从该推文中获取推文,将推文数量添加到计数中,并使用新的最后一条推文更新最后一条推文条目。
  • 泡沫,冲洗,重复。

该方法存在一个问题:如果在不到2分钟内有超过1500条推文,则有些不会被计算在内。

要获取上一条推文的推文,您可以使用since_id参数:

  

since_id:返回状态ID大于给定ID的推文。

Twitter Search API