2012-06-06 67 views
1

我寫了下面的代碼來檢索用戶的Twitter追隨者。它適用於擁有150位粉絲或更少用戶的用戶(我已使用多個帳戶進行測試)檢索Twitter追隨者的更快方法?

但是,如果用戶擁有超過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) ; 

?> 
+0

有沒有辦法只讓小夥伴關注的人而不是整個事情呢? – ToastyMallows

+0

當然。你可以改變循環條件來實現這一點。 –

+0

所以你知道它在一定程度上效果很好。檢查他們有多少追隨者,然後如果超過了一定的數量,則將其拉下來。你說好的數量是150?如果他們有超過150個追隨者,一次只能拉下150個。 – ToastyMallows

回答

0

當每個跟隨者都需要第二個json請求時,無論如何優化代碼,您都無法更快地執行腳本。 HTTP請求的響應時間是您的瓶頸。

最早的解決方案然後將做一些parallel請求。

+0

謝謝。我不熟悉並行請求。我會研究這一點。 –

+0

我不推薦平行的東西。 – powtac

1

由於每documentation

強烈建議你使用POST較大的請求。

我發現超過大約50個用戶ID需要使用POST。