我利用了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)){
}
?>
上述代码的任何改进也将受到赞赏。
全部谢谢
答案 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时使用它,因为它们在过去也非常不可靠。