2011-02-04 11 views
0

私はいくつかのPHPのランダム性を実行してCURLを使用せずにgraph.facebook.comからFacebookのデータを持っています...私はCURLの使い方を知らず、アプリのキーなどを渡す必要もありません!スピードアップキーアプリやCURL使用せずに、Facebookのファンを取得する別の方法

// Create a function to calculate the number of fans. 
function calculatefans($facebookid) { 
    $file = "https://graph.facebook.com/".$facebookid; 
    // Get data from that specific Facebook page  
    $facebookdata = file_get_contents($file); 
    // Reverse data from Facebook Graph so that the "likes" figure is at the front 
    $facebookbackwards = strrev($facebookdata); 
    // Select only the "likes" figure is in the variable 
    $offset = strpos($facebookbackwards, ":"); 
    // Minus 1 from the offset 
    $newoffset = $offset-1; 
    $fansbackwards = substr($facebookbackwards, 1, $newoffset); 
    // Turn the "likes" figure the right way around 
    $fans = strrev($fansbackwards); 
    // Change the result from a string to an integer so you can do some maths on the result. 
    $fanresult = (int)$fans; 
    // Use return not echo because you want to do something with the data later. 
     return $fanresult; 
} 

しかし、これは明らかに、誰もが私はこれをスピードアップすることができる方法についてのアイデアを持っていた場合、私は思っていた...非常にゆっくりと実行していますか?

私のウェブサイトはこれを実行していますhttp://www.ibizavote.comです。表示されている場合、コードは動作していますが、これをサイトに追加すると、サイトは4.4秒から14.4秒に読み込まれます。

私はこれをスピードアップできると確信しています... アイデア?

おかげで、 アレックス

+0

facebook php sdkを使用してください。これはあなたのためにすべてのCURLを行います。 https://github.com/facebook/php-sdk/ – Gazler

+0

自分のページのFacebookのファンだけを取得するためにapp-keyを追加する必要はありませんか?他のページのファンをたくさん探していますか? –

答えて

0

strの反転は、SUBSTR、strposは非常に高速です。

遅い部分はWebサービスリクエストになります。カールでこれを行う場合は、ここに示した例に従って、Facebook API:http://php.net/manual/en/function.curl-multi-init.phpに合わせて複数のリクエストを同時に送信することができます。

FacebookのレスポンスをJSONデータとして解析していないのはなぜですか? json_decodeはcで実装され、高速です。 Facebookの出力形式が変更された場合、ここで行っている文字列スクラップは失敗する可能性があります。

また、より複雑なレポートを生成し、探しているデータのサブセットのみを返すFQLを調べることもできます。参照:http://developers.facebook.com/docs/reference/fql/

このような状況でやりたいことは、Facebookからのレスポンスをキャッシュに入れて、すべてのファンのカウントをすべてリクエストする必要はありません。

パラレルリクエスト(curl_multi_init)+キャッシングが必要です。

関連する問題