Я внедряю Klout API с веб-приложением, с которым я работал.
Klout позволяет выполнять 10 запросов в секунду и 10 000 в день.
Каждая учетная запись пользователя может просматриватьN других учетных записей пользователей с их оценками Klout.
Будет ли лучшим способом сбора этой информации периодический запрос оценок из API Klout в качестве фонового процесса и сохранение этих результатов в базе данных?
ЕслиЯ делаю это, скажем, у нас есть 10 пользователей, у которых есть 30 других пользователей, которые хотят просмотреть оценки Klout.
В ежедневном фоновом процессе, скажем, мы проходим через каждого из 10 пользователей и ищем каждого изих 30 баллов Klout для отслеживаемых пользователей.
Это будет проверять API Klout не более 300 раз на протяжении всего этого процесса (однако вы можете включить до 5 пользователей для просмотра их баллов за запрос - таким образом, число запросовможет быть уменьшен до 60).
Чтобы избежать 10 запросов в секунду, я должен приостановить процесс примерно на 10 секунд bмежду каждым запросом?Это лучший способ избежать ошибок API?
Пример Psuedo:
$maxUserPerRequest = 5;
foreach ($users as $user){
$follows = getKloutFollows($user); // list of klout scores to look up per user
$minimize = 0; // allow to minimize total requests by 5 users per req.
$batch = array() // array of 5 users to request
foreach($follows as $follow){
$batch[] = $follow;
// query 5 users at a time
if ($maxUserPerRequest % $minimize==0){
$kloutAPI->getScore($batch); // storing results
$batch = array();
sleep(10); // avoid overloading API requests
}
$minimize++;
}
}