Работа с взлетами и падениями Twitter - API - PullRequest
0 голосов
/ 12 августа 2009

Я использую замечательный класс, созданный Джайсеном: http://github.com/jmathai/twitter-async/tree/master. В последнее время твиттер был вверх и вниз, и я уверен, что в будущем он останется таким же, поэтому я пытаюсь сократить свои зависимость от твиттера на самом деле работает.

Ниже приведено то, что у меня есть в моем header.php, оно находится прямо вверху и генерирует URL-адрес для входа для каждого пользователя. Если твиттер не работает, мой сайт зависает столько, сколько ему нужно, и выдает исключение. Поэтому я должен поймать эти исключения, которые я уже сделал.

Теперь я хочу через несколько секунд просто отменить запрос к 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 ]

4 голосов
/ 12 августа 2009

Библиотека поддерживает значение, которое будет передано в тайм-аут curl.

$twitterObj->setTimeout($secs_request_timeout);

Я только что добавил поддержку для передачи таймаута соединения. Невозможно запустить юнит-тесты, потому что у меня ограниченная скорость. Приму это, как только я смогу убедиться, что это работает.

$twitterObj->setTimeout($secs_request_timeout, $secs_connection_timeout);
2 голосов
/ 12 августа 2009

Используйте curl_setopt(CURLOPT_CONNECTTIMEOUT, 1 /* 1 second timeout */);, чтобы CURL прекратил работу, если соединение не установлено в течение 1 секунды. Я использую это при подключении к API Facebook, потому что в прошлом они также были довольно ненадежными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...