Давайте возьмем простой запрос FQL
, чтобы получить все ссылки, которыми поделились друзья пользователя со вчерашнего дня, например:
SELECT link_id, title, url, owner, created_time
FROM link
WHERE
created_time > strtotime('yesterday') AND
owner IN (
SELECT uid2 FROM friend WHERE uid1 = me()
)
LIMIT 100
Если у пользователя 50 друзей, это будет выполнено отлично.Но если у пользователя есть сотни друзей, чаще всего Facebook возвращает ошибку.
Параметры:
- Ограничить запрос выбора друга50 - Конечно, это сработает, но каждый раз будет показывать одних и тех же друзей.Если вам не нужен канал только для Ivy League , это не очень полезно.
- Пакетные запросы - создание пакета запросов с использованием смещений и ограничение каждого из них до50. К сожалению, здесь тоже нет никаких улучшений.
- Loop It - Пока это лучшее, что я нашел.Перебирайте те же запросы, которые вы создали для пакетного запроса, но делайте это по одному с несколькими вызовами api fql запроса.Но даже это хит и мисс.
Как правильно запросить Facebook, чтобы обеспечить успешные результаты?
Примечания:
- Я использую последнюю версию Facebook php sdk, 3.1.1
- Я также пытался расширить параметры по умолчанию для тайм-аутов curl в base_facebook.php
CommonОшибки, связанные с Таймаутом:
1.
Fatal error: Uncaught Exception: 1: An unknown error occurred thrown in /..../facebook/php-sdk/src/base_facebook.php on line 708
Строка 708 является ошибкой исключения:
// results are returned, errors are thrown
if (is_array($result) && isset($result['error_code'])) {
throw new FacebookApiException($result);
}
2.
Fatal error: Uncaught CurlException: 52: SSL read: error:00000000:lib(0):func(0):reason(0), errno 104 thrown in /..../facebook/php-sdk/src/base_facebook.php on line 814