График API в Facebook очень медленный при выполнении нескольких запросов - PullRequest
0 голосов
/ 17 ноября 2011

Я пытаюсь написать простую систему отслеживания для нескольких кампаний в Facebook, которые мы проводим (на данный момент семь). Ключевой особенностью этой системы является возможность видеть все одинаковые числа этих страниц в режиме реального времени, поэтому я написал простой php-код, чтобы получить одинаковое число для каждой страницы из графика api, и я вызываю его с помощью ajax каждые несколько секунд , Проблема заключается в медленном ответе от Facebook, получение ответа занимает около 2 секунд и может достигать 20 (!!!) секунд. Вот функция, которую я написал, чтобы получить счетчик подобных:

function getlikes($pageid){
echo json_decode(file_get_contents("http://graph.facebook.com/" . $pageid . "?fields=likes"))->likes;
};

Есть ли способ обойти это? или Graph-API просто медленный, и мне придется иметь дело с каким-то элегантным решением?

Спасибо.

Ответы [ 3 ]

1 голос
/ 17 ноября 2011

Во-первых, убедитесь, что вы кэшируете данные, чтобы не повторять их каждый раз, когда кто-то просматривает страницу.

Отдаленная секунда, чтобы избежать установки нового http-соединения для каждого запроса, вы можете использовать пакетный API: https://developers.facebook.com/docs/graph-api/making-multiple-requests/

0 голосов
/ 17 ноября 2011

Я советую вам кешировать счетчики где-то на вашем сервере, чтобы быстро выполнять запросы AJAX (и было бы лучше, если бы более одного клиента следили за счетами). на стороне сервера должно быть задание cron, обновляющее кеш подсчетов.

для ускорения получения отсчетов от Facebook вы можете делать все запросы к нему параллельно с curl несколькими запросами. если вам интересно, взгляните на прокручивающийся локон библиотека

0 голосов
/ 17 ноября 2011

Может быть, вам нужно использовать токен доступа с этим методом, не знаю, почему он не работает на моем локальном хосте, но из графического проводника работает довольно хорошо

<?php
$pageids = array('xxxxxxxx');
$likes = json_decode(file_get_contents("http://graph.facebook.com/fql?q=SELECT page_id, fan_count FROM page WHERE page_id IN(". implode(',', $pageids) .")"));
?>

https://developers.facebook.com/tools/explorer

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