我正在尝试使用this API call从我的数据库中获取1000多个Twitter用户。但是,Twitter查询每个呼叫只允许100个用户,那么我怎么能用10个呼叫呢?
如果我的数据库中有2232个用户,并且我想对所有用户进行查找并获取详细信息如何操作?计算所有被搜索用户的数量,将其分解为100个元素的数组,调用100,然后将响应添加回数据库,然后移到下一个100。
我在Twitter上使用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>";
}
但如何使用此更新数据库中的值..我做了检查,但响应的顺序总是改变,所以不能使用当前的键..
答案 0 :(得分:0)
你可以循环通过最大数量的用户和每百次循环通过一百个用户并在那里做你的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
}
}
}
答案 1 :(得分:0)
嗨,这里有一些简单的步骤来完成这项任务
1:获取数据库中的屏幕名称,限制为100 2:用逗号载入(用逗号连接)
将很容易
3:将这100个发送给用户/查询呼叫并获取数据
4 :(重要)如果您收到“超出速率限制”的错误,请使用代理商 代理将给你另一个机会下一个100用户的电话
5:解码json并将数据发送到db (重要的)如果您使用用户的ID而不是屏幕名称,那么更新db
还有问题在这里发表评论
答案 2 :(得分:0)
强烈建议您使用POST来处理更大的请求。
因此,请尝试将2,000个ID发布给他们。
关于问题的第二部分
响应的顺序总是改变,所以不能使用当前的键..
从您的用户IDd数组开始 - $ids
以$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);