我想吸引两个输入用户的所有关注者。我是这样做的,但是当用户尝试拥有一百万个关注者时(例如500万,等等),我从Instagram得到了这个错误。
在我的示例中:
-> User1有500万关注者
-> User2有7个Millon关注者
我需要获得这些用户的关注者,然后存储两个数组并相互比较。
我这样做了,但是只有小额帐户...
出了点问题:由于API请求过多,Instagram被节制。出了点问题:由于API请求过多,Instagram被节制了。
这是我的代码:
require 'vendor/autoload.php';
\InstagramAPI\Instagram::$allowDangerousWebUsageAtMyOwnRisk = true;
$username = 'test_35_1041';
$password = '*****';
$ig = new \InstagramAPI\Instagram();
try {
$ig->login($username,$password);
} catch (\Exception $e) {
echo $e->getMessage();
}
if (!empty($_POST)){
$name1 = $_POST["username1"];
$name2 = $_POST["username2"];
$userId = $ig->people->getUserIdForName($name1);
$userId2 = $ig->people->getUserIdForName($name2);
$items = array();
$items2 = array();
$time_start = microtime(true);
try {
$maxId = null;
$rankToken = \InstagramAPI\Signatures::generateUUID();
do {
$response = $ig->people->getFollowers($userId,$rankToken,null,$maxId);
$json = json_decode($response);
foreach ($json->users as $value) {
# code...
$items[] = $value->username;
//print_r($value->username);
}
$maxId = $response->getNextMaxId();
flush();
} while ($maxId !== null);
} catch (\Exception $e) {
echo 'Something went wrong: '.$e->getMessage()."\n";
}
try {
$maxId = null;
$rankToken = \InstagramAPI\Signatures::generateUUID();
do {
$response = $ig->people->getFollowers($userId2,$rankToken,null,$maxId);
$json = json_decode($response);
foreach ($json->users as $value) {
# code...
$items2[] = $value->username;
//print_r($value->username);
}
$maxId = $response->getNextMaxId();
} while ($maxId !== null);
} catch (\Exception $e) {
echo 'Something went wrong: '.$e->getMessage()."\n";
}
$time_end = microtime(true);
$execution_time = ($time_end - $time_start)/60;
$result = array_intersect($items, $items2);
}
我认为它更复杂,我需要为您的帮助优化此代码... 我该如何解决这个问题?
谢谢大家。
答案 0 :(得分:0)
由于API请求过多,Instagram对其进行了限制
这意味着您经常发送请求。您需要像这样在每个循环步骤上睡觉
try {
$maxId = null;
$rankToken = \InstagramAPI\Signatures::generateUUID();
do {
****
Log::info( "Sleeping for 5s...");
sleep(5);
} while ($maxId !== null);
} catch (\Exception $e) {
echo 'Something went wrong: '.$e->getMessage()."\n";
}