1

このAPI呼び出しを使用して、データベースから1000人以上のTwitterユーザーを取得しようとしています。ただし、Twitterルックアップでは1回の呼び出しで100人のユーザーしか許可されないので、10回の呼び出しでそれを行うにはどうすればよいですか?

DBに2232人のユーザーがいて、すべてのユーザーを検索して詳細を取得したい場合はどうすればよいですか?検索されているすべてのユーザーをカウントし、100個の要素の配列に分割し、100を呼び出し、応答をデータベースに追加して、次の100に移動するもの。

tmhOAuthTwitter用のライブラリを使用しています。

編集済み:このコードを使用してそれを達成することができましたが、次の質問は、これらの値をアカウントにバインドする方法です。screen_nameはエントリであり、配列のKEYではないため、どうすればよいですか?

    $accounts = $this->accounts->getAll();
    $accounts_chunk = array_chunk($accounts,100);
    foreach($accounts_chunk as $accounts){
        $screen_names = "";
        $last_key = end(array_keys($accounts));
        foreach($accounts as $k => $account){
            $screen_names .= $account->screen_name;
            if($last_key == $k){
                $screen_names .= "";
            } else {
                $screen_names .= ",";
            }          
        }
            $code = $this->twitter->request('GET', $this->twitter->url("1/users/lookup"),array('screen_name' => $screen_names));
            echo "<pre>";print_r(json_decode($this->twitter->response));echo "</pre>";
    }

しかし、これを使用してDBの値を更新する方法..チェックを行いましたが、応答のシーケンスが常に変更されるため、現在のキーを使用できません..

4

3 に答える 3

0

こんにちはここにこのタスクを行うためのいくつかの簡単な手順があります

1:100の制限でデータベースからスクリーン名を取得します
2:コンマでインロードします(コンマで結合します)
3:これらの100をユーザー/ルックアップ呼び出しに送信してデータを取得します
4 :(重要)「レート制限」のエラーを受け取った場合超過」次に、PROXY
プロキシを使用すると、100ユーザーの次の呼び出しを行う別の機会が与えられます
5:jsonをデコードし、データをdbに送信します(重要)画面名の代わりにユーザーのIDを使用すると、dbを簡単に更新できます

まだここにコメントを叫ぶのに問題があります

于 2012-11-05T10:40:28.767 に答える
0

Twitter APIは言う

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

2,000 個の ID を投稿してみてください。

あなたの質問の2番目の部分に関して

応答の順序は常に変化するため、現在のキーを使用することはできません..

ユーザー IDd の配列から始めます -$ids

Twitter からの応答を次のように取得します。$tl

// Place the users into an array
$sortedUsers = array();
foreach ($tl as $user) {
    $user_id = $user->id;
    // $tl is *unsorted* - but $ids is *sorted*. So we place the users from $tl into a new array based on how they're sorted in $ids
    $key = array_search($user_id, $ids);
    $sortedUsers[$key] = $user;
}

    // Sort the array by key so the most recent is at the top
ksort($sortedUsers);
于 2012-11-05T14:50:42.563 に答える
0

最大数のユーザーをループし、100 回ごとに 100 人のユーザーをループして、そこで Twitter マジックを行うことができます。

$iNumUsers = 2232; // or a mysql_num_rows-like result;

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

  if($i % 100 == 0) {

    for($j = $i; $j < 100; $j++) {

      // your twitter-code here
    }   
  }
}
于 2012-11-05T08:21:56.033 に答える