0

これが私が今していることです。

 foreach($response['data'] as $friends_phtoos) {
     $f_id = $friends_phtoos['id'];
     $img = 'https://graph.facebook.com/'.$f_id.'/picture';
     $image = $f_id.'.jpg';
getFacebookPhoto($img, $image);
 }

最大 10 枚の写真に対してこのループを実行していますが、10 枚の写真すべてをダウンロードするには時間がかかります。

それらの写真をすばやく取得するための最良の方法は何ですか? batchについて聞いたことがあります。しかし、PHPでの使用方法がわかりません。

getFacebookPhoto 関数は、写真をダウンロードするための curl 関数です。curl を使用して Facebook の写真を取得できますか? FBの利用規約に反しますか?(追加の質問;)

4

2 に答える 2

1

速度が低下している 10 回の API 呼び出しを行っています。getFacebookPhotocurl を使用しても問題はありませんが、関数がどのように見えるかわからないためfile_get_contents、完全な解決策を提供するために使用します。

コツは、1 回の API 呼び出しですべての写真を取得することです。Graph API パスを使用する/ID/photo/と、ユーザーの写真への 301 リダイレクトが発生するため、処理が少し遅くなります。FQL の方がはるかに高速なので、FQL を使用します。これにより、Facebook の写真への ID と URL を含む配列が得られます。ID を送信したのと同じ順序でデータが返されると想定しないでください。

$f_id = array();
foreach($response['data'] as $friends_phtoos) {
     $f_id[] = $friends_phtoos['id'];
 }
$ids = implode(',',$f_id);
$fql = "SELECT id, pic FROM profile WHERE id IN ({$ids})";
$url = 'http://graph.facebook.com/fql?q=' . urlencode($fql);
$fb_photos = json_decode( file_get_contents($url) );
于 2012-08-14T17:16:05.030 に答える
-1

この forloop に特別なことは何もないことを考えると、問題はおそらくダウンロードにあります。これに時間がかかる理由は、実装とは関係ありませんが、ダウンロード速度自体にある可能性が最も高いです。

于 2012-08-14T16:51:41.500 に答える