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

当每个追随者都需要第二个 json 请求时,无论您如何优化代码,您都无法更快地执行脚本。HTTP 请求的响应时间是您的瓶颈。

唯一的解决方案是执行一些并行请求。

于 2012-06-06T15:48:07.997 回答