【问题标题】:php instagram api not getting all the followersphp instagram api没有获得所有关注者
【发布时间】:2016-06-20 04:56:11
【问题描述】:

我创建了一个 php 脚本,该脚本将获取 instagram 用户的用户 ID,并将删除该用户的所有关注者。下面是脚本。问题是,当我试图获取拥有 1 或 2 百万关注者的用户的总关注者列表时,我的脚本在 60k 个用户名后崩溃,错误为 PHP Warning: in_array() expects parameter 2 to be array, null given in filename.php on line LINE NO

<?php

    require '../src/Instagram.php';

    /////// CONFIG ///////
    $username = 'USERNAME';
    $password = 'PASSWORD';
    $debug = false;

    $i = new Instagram($username, $password, $debug);
    $myfile = fopen("file.txt", "w") or die("Unable to open file");

    try {
        $i->login();
        $var = $i->getUserFollowers("432464344");
        do {
            $results = $var['users'];
            foreach($results as $result) {
                $username = $result['username'];
                $username = $username . "\n";
                fwrite($myfile, $username);
        }
        if (in_array('next_max_id', $var)) {  // <-- HERE ERROR
            $next_max_id = $var['next_max_id'];
        } else {
            break;
        }
        $var = $i->getUserFollowers("432464344", $next_max_id);
    } while (1);
} catch (InstagramException $e) {
    $e->getMessage();
    fclose($myfile);
    exit();
}
echo $count;
fclose($myfile);

感谢和问候,

【问题讨论】:

  • Math_BigInteger 如何解决我的问题?我没有在脚本中的任何地方使用任何计数器或整数变量。 @snapGeek
  • 试试,如果 Math_BigInteger 解决了问题。参考 - stackoverflow.com/questions/4427020/…

标签: php instagram


【解决方案1】:

问题出在 getUserFollowers 函数上(期望参数 2 是数组,给定 null)。只需检查该函数返回 null 并解决该问题的可能性。

可能的情况是,Instagram 阻止了您的请求并返回错误,或者您的系统中的系统内存使用量过大。

【讨论】:

  • getUserFollowers函数实现为public function getUserFollowers($usernameId, $maxid = null) { return $this-&gt;request("friendships/$usernameId/followers/?max_id=$maxid&amp;ig_sig_key_version=".Constants::SIG_KEY_VERSION."&amp;rank_token=$this-&gt;rank_token")[1]; }
  • 看来您正在使用 mgp25(github.com/mgp25/Instagram-API/blob/master/src/Instagram.php) 的 Instagram-API。如果你签入请求函数,它会返回array($header, json_decode($body, true)).. 如果网络调用的 $body 为空,你的 getUserFollowers 也将返回空。因此,不要盲目地在函数 getUserFollowers 中返回结果,而是处理异常。正如我之前提到的,网络呼叫中的问题可能是因为 Instagram 在您连续发送请求时阻止了您的请求。添加睡眠功能可能有助于解决问题。
  • 每次通话之间的睡眠时间可以解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 2019-07-11
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 2022-08-21
相关资源
最近更新 更多