2012-11-05 2 views
1

this API call을 사용하여 1000 명 이상의 트위터 사용자를 데이터베이스에서 가져 오려고합니다. 그러나 Twitter 조회는 통화 당 100 명의 사용자 만 허용하므로 10 회의 통화로 어떻게 할 수 있습니까?Twitter API 사용자 조회 1000 명

내 DB에 2232 명의 사용자가 있고 모든 사용자에 대해 조회를 수행하고 세부 정보를 얻으려는 경우 어떻게해야합니까? 검색되는 모든 사용자를 계산하고 100 개의 요소 배열로 나눠서 100을 호출하고 데이터베이스에 응답을 다시 입력 한 다음 다음 100으로 이동합니다.

나는 tmhOAuth 라이브러리를 사용 중입니다. 지저귀다.

EDITED : 이 코드를 사용하여이 작업을 수행 할 수 있었지만 다음 질문은 어떻게 이러한 값을 내 계정에 다시 바인딩 할 수 있습니까? 왜냐하면 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에 값을 업데이트하는 방법이 ... 내가 확인하지만 항상 현재의 키를 사용할 수 있도록 변경 응답의 순서 ..

+0

로 트위터의 응답을 받기 + 사용자? – halfer

+0

올바른 [API 호출] (https://dev.twitter.com/docs/api/1.1/get/users/lookup)을 선택하신 것 같습니다. 1.1 버전보다는 1.1 버전을 사용하고 있습니까? 지금까지 요청한 PHP 코드를 볼 수 있습니까? – halfer

답변

0

했다 당신 수의 최대 수를 통해 루프 사용자 및 백 번째 사용자를 통한 백 번 반복을 통해 트위터 매직을 수행하십시오.

$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 
    } 
    } 
} 
0

안녕하세요 여기

1이 작업을 수행하는 몇 가지 간단한 단계는 다음과 같습니다 쉼표로 impload (쉼표로 가입)
: 100
2의 한계와 DB에서 화면 이름을 가져옵니다 3 :이 100을 사용자/조회 전화로 보내고 데이터를 받으십시오.
4 : (중요) "속도 제한 초과"오류가 발생하는 경우 프록시 사용
프록시는 다음 사용자 100 명을 다시 호출 할 수있는 기회를 제공합니다(210) 5 : 당신이 DB를 업데이트하려면 다음이 쉬울 것이다 화면 이름 대신 사용자의 ID를 사용하는 경우 디코딩 JSON 및 전송 데이터 (중요) dB로

여전히 문제가 여기

0

다음은 코멘트를 소리가 Twitter API에 의하면

큰 요청에 대해서는 POST를 사용하는 것이 좋습니다.

그래서 그들에게 당신의 2000 ID를 게시하려고합니다. 귀하의 질문에 응답의 순서는 항상 현재 키를 사용할 수 있도록 변경

의 두 번째 부분에 관해서

..사용자의 배열과

시작 IDD - $ids

은 이미 트위터 처리하거나 이러한 2000의 각 정수 트위터 사용자 ID가 있습니까 $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); 
+0

ID로 할 수 없다고 생각합니다. screen_name을 사용하는 방법은 어떨까요? $ account-> screen_name으로 DB에 screen_name을 저장했습니다. 트위터도 반환됩니다 .. user-> screen_name, 어떻게 바인딩 할 수 있습니까? 내 데이터로? – user1799524