Как показать все мои «лайки» в фейсбуке и общее количество «фанатов»? - PullRequest
1 голос
/ 23 июня 2011

Я тестировал способ показать все мои «лайки» на Facebook и соответствующее количество «фанатов». Приведенный ниже код работает, но он очень ... очень ... очень медленный, и я предполагаю, что он очень медленный из-за большого количества запросов, которые должны проходить через API Facebook из-за функции foreach. Есть ли возможность сделать то же самое, что я делаю ниже, но только с одним запросом (без использования foreach)?

require_once('src/facebook.php');
$facebook = new Facebook(array(
    'appId'  => '12345',
    'secret' => 'blablabla',
    'api' => '172737262',
    'cookie' => true,
));
$likes = $facebook->api('/me/likes');

foreach($likes[data] as $value){
$id = $value['id'];
$fans = $facebook->api(array(
    'method' => 'fql.query',
    'query' => "select fan_count,name from page where page_id = $id;"
));

echo "$id - {$fans[0]['fan_count']} - {$value['name']}<br>";
unset($id,$fans);
}

1 Ответ

0 голосов
/ 23 июня 2011

Я не знаком с API-интерфейсами Facebook, но в целом, когда вы выполняете SQL-запросы, вы не хотите запрашивать базу данных чаще, чем нужно, потому что доступ к базе данных является дорогостоящей операцией.

Таким образом, вместо использования цикла for с этим запросом для выбора числа вентиляторов для каждого идентификатора страницы по одному, снова и снова,

'query' => "select fan_count,name from page where page_id = $id;"

вы могли бы удалить запросиз цикла for и перепишите его, чтобы выбрать сразу все числа вентиляторов, в одном запросе, используя синтаксис IN SQL, что-то вроде

$ids = "id1, id2, ... , idn";

// ...

'query' => "select fan_count,name from page where page_id in ($ids);"

Может, это сработает?

...