1

ユーザーの Twitter フォロワーを取得する次のコードを作成しました。フォロワーが 150 人以下のユーザーに適しています (いくつかのアカウントでテストしました)。

ただし、ユーザーのフォロワーが 500 人を超えると、スクリプトの読み込みに時間がかかり、PHP の最大実行時間のためにタイムアウトになることがあります。

これを行うためのより良い方法を見つけたいのですが、許容される実行時間を増やすために php.ini を編集したくありません。

<?php
   $cursor = -1;
   $account_from = 'twitter';
   do
   {
     $json = file_get_contents('http://api.twitter.com/1/followers/ids.json?cursor='.$cursor.'&screen_name='.$account_from.'');
     $accounts = json_decode($json);

     foreach ($accounts->ids as $account)
      {
        $a[] = $account ; 
      }

      $cursor = $accounts->next_cursor;


    }while ($cursor > 0);


    $n = ceil(count($a) / 100) ; 
    $b = array_chunk($a, 100) ; 



    for($i=0 ; $i<$n ; $i++) {

        $user = ''; 

        for($j=0 ; $j<count($b[$i]) ; $j++) {

                    $user =  $user.$b[$i][$j].',' ;


        }

        $json=file_get_contents('http://api.twitter.com/1/users/lookup.json?user_id='.$user.'') ;
        $fo= json_decode($json);

        foreach ($fo as $key => $jsons) {

             foreach($jsons as $key => $value) {

                     if($key == 'screen_name'){

                             $arr[] = $value;

                    }


            }


        }




    }

    echo "<pre>" ; 
    print_r($arr) ;

?>
4

2 に答える 2

1

ドキュメントによると

より大きなリクエストには POST を使用することを強くお勧めします。

約 50 を超えるユーザー ID では、POST を使用する必要があることがわかりました。

于 2012-06-07T13:26:51.680 に答える
0

すべてのフォロワーに対して 2 番目の json リクエストが必要な場合、コードをどのように最適化しても、スクリプトを大幅に高速に実行することはできません。HTTP リクエストの応答時間がボトルネックです。

唯一の解決策は、いくつかの並列リクエストを実行することです。

于 2012-06-06T15:48:07.997 に答える