1

ブログ投稿への Facebook コメントの数を取得するために、次の関数があります。

function comment_count($url) { 

 $json = json_decode(file_get_contents('https://graph.facebook.com/?ids=' . $url));
 return ($json->$url->comments) ? $json->$url->comments : 0;
}

ただし、ページ上の 5 つの投稿を取得するためにクエリの結果を取得するループに挿入すると、この関数は Web サイトの速度に深刻な影響を与えます (ページの読み込みに最大 6 ~ 7 秒かかります)。

これを回避する方法はありますか?なぜそんなに遅いのですか?

ありがとう

4

1 に答える 1

2

URL のカンマ区切りのリストを ids パラメータに渡して、一度にすべてのカウントを取得するか、サーバー側でそれらをキャッシュしてそれらの値を使用します。

例: https://graph.facebook.com/?ids=http://www.google.com,http://www.bing.com,http://www.yahoo.com

これは、Facebook のGraph API リファレンスの「選択」セクションで指定されています。

実装例は次のとおりです。

<?php
function comment_count($urls) {
    $json = json_decode(file_get_contents('https://graph.facebook.com/?ids=' . implode(',', array_map("rawurlencode", $urls))));
    $output = Array();
    foreach($json as $url=>$data)
    {
        $output[$url] = isset($data->comments) ? $data->comments : 0;
    }
    return $output;
}
var_dump(comment_count(Array('http://www.facebook.com/', 'http://www.google.com')));

これが役立つことを願っています!

于 2012-12-14T19:02:10.563 に答える