处理Twitter的Ups and Downs - API

时间:2009-08-11 22:13:06

标签: php api twitter

我利用了Jaisen制作的一个伟大的课程:http://github.com/jmathai/twitter-async/tree/master。最近twitter一直在上下,我相信它将来会继续保持不变,所以我试图减少我对twitter实际工作的依赖。

以下是我在header.php中的内容,它位于顶部,它为每个用户生成登录URL。如果Twitter关闭,我的网站会挂起,只要它需要,它会引发异常。所以我必须抓住这些我曾经做过的例子。

我现在想在几秒钟之后取消对API的请求,只需加载页面并继续在幕后尝试。我怎样才能做到最好?

<?php include './twitter/EpiCurl.php'; include './twitter/EpiOAuth.php'; include './twitter/EpiTwitter.php';
$consumer_key = 'mykey';
$consumer_secret = 'mysecret';

$twitterObj = new EpiTwitter($consumer_key, $consumer_secret); 

try{  

$twiturl = $twitterObj->getAuthenticateUrl();
$url = "window.open('".$twiturl."','Login', 'left=20,top=20,width=500,height=500,toolbar=0,resizable=1'); startLoad();";

}catch(EpiOAuthBadRequestException $e){  
  // bad request exception do something  
  $statusMessage = 'Oops an error has occurred: ' . $e->getMessage();  
}catch(EpiOAuthUnauthorizedException $e){  
  // bad authorization..probably bad tokens, do something different  
  $statusMessage = 'Oops an error has occurred: ' . $e->getMessage();  
}catch(EpiOAuthException $e){  
  // uh oh, unknown oauth exception  
  $statusMessage = 'Oops, an unknown authorisation error has occurred! The mojo team have been notified! Please try again.';
}

if(isset($statusMessage)){

}
?>

上述代码的任何改进也将受到赞赏。

全部谢谢

2 个答案:

答案 0 :(得分:4)

该库支持将值传递给curl超时。

$twitterObj->setTimeout($secs_request_timeout);

我刚刚添加了对传递连接超时的支持。无法运行单元测试,因为我的速率有限。一旦我可以验证它是否有效,就会提交。

$twitterObj->setTimeout($secs_request_timeout, $secs_connection_timeout);

答案 1 :(得分:2)

如果在1秒内未建立连接,则使用curl_setopt(CURLOPT_CONNECTTIMEOUT, 1 /* 1 second timeout */);导致CURL放弃。我在连接到facebook API时使用它,因为它们在过去也非常不可靠。