6

我通过订阅 5 个地区在 Instagram API 上实现了实时功能。这些地区几乎覆盖了布加勒斯特地区,所以我想我应该从 Instagram 的服务器上获得很多行动。

这是我在 PHP (CodeIgniter) 中实现所有内容的方式:

  • 我为所有 5 个地理区域创建了一个回调页面,该页面分析来自 Instagram API 的原始帖子,获取地理 ID,然后根据各自的地理 ID请求从该区域上传到地理端点的最近照片
  • 我解析此响应并缓存照片的数据,以便稍后检索
  • 我在http://hipstagram.ro/上显示最后 30 个结果

问题是我已经通过使用手机从这些区域之一拍摄照片进行了一些测试,有时我的照片会出现,有时不会。该实现没有抛出任何错误,但它的工作原理很奇怪。因此......我有几个悬而未决的问题:

问:我可能会丢失请求吗?它在Instagram API 文档中说我应该在 2 秒内确认请求。这是我的代码在回调方法(PHP CodeIgniter)中的样子:

if ($_SERVER ['REQUEST_METHOD'] == 'POST') {
    header("Content-Length: 0");
    header("Connection: close");
    flush();

    // do stuff with file_get_contents('php://input')
    // also, get new photos...

    $data   = json_decode (file_get_contents('php://input'));

    if (is_array ($data))
        foreach ($data as $geo) {
            $this->db->query ("LOGGING SOMETHING HERE...");

            // make some a cURL request to the geography endpoint
            // get the photos, save them in the database
            $this->live->updateGeo ($geo->object_id);
        }
}

问:如果我缺少请求:

  • 是因为$this->live->updateGeo(等待 cURL 调用结束)的增加时间,回调需要太长时间吗?
  • 是因为我的服务器在罗马尼亚,而 Instagram 的所有请求都来自美国 IP?

我分析了原始访问日志,不时收到请求高峰,然后是长时间的沉默。我认为这要么是因为 Instagram API 没有向我发布任何内容,要么是因为我没有在 2 秒内做出响应。否则......为什么这些请求会同时发生(几秒钟内有 5-10 个请求)?不像 5-10 个人碰巧同时拍照,然后每个人都把手机放回口袋里 :)

4

0 回答 0