0

私は写真サイトを 2 年以上運営しており、各画像ページが各画像の下に蓄積した Facebook の「いいね!」と「シェア」の数に関する統計を表示していました。

この情報を取得して変数に入れるために使用したコードは次のとおりです。

<?php   // Get Facebook Stats for Shares Likes Comments etc...
    $url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($this->canonicalurl);
    $xml = file_get_contents($url);
    $xml = simplexml_load_string($xml);
    $shares = number_format($xml->link_stat->share_count);
    $likes = number_format($xml->link_stat->like_count);
    $comments = number_format($xml->link_stat->comment_count);
    $total = number_format($xml->link_stat->total_count);
?>

今日、PHP5.2 から 5.4 に切り替えたところ、突然すべての統計が表示されなくなるまで、すべて問題ありませんでした。少し読んだところ、allow_url_fopen = 1 を設定する必要があると言う人もいましたが、それは既に設定されています。

file_get_contents の使用に関係があるのではないかと他の人が言っていましたが、具体的な結果は得られませんでした。

何が間違っているのか、誰かに光を当てることはできますか? それが原因である場合、この問題を回避する file_get_contents を使用せずに上記を記述する別の方法はありますか?

ありがとう!

4

1 に答える 1

0

ここでのエラーは、number_format が倍精度である必要があることですが、$xml はオブジェクトです。number_format を削除することもできますが、intval をお勧めします。

<?php   // Get Facebook Stats for Shares Likes Comments etc...
    $url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($this->canonicalurl);
    $xml = file_get_contents($url);
    $xml = simplexml_load_string($xml);
    $shares = intval($xml->link_stat->share_count);
    $likes = intval($xml->link_stat->like_count);
    $comments = intval($xml->link_stat->comment_count);
    $total = intval($xml->link_stat->total_count);
?>
于 2013-11-02T20:57:06.973 に答える