6

5 つの地域をサブスクライブすることで、Instagram API にリアルタイム機能を実装しました。これらの地域はブカレストのほぼ全域をカバーしているので、Instagram のサーバーから多くのアクションを取得する必要があると考えています。

PHP(CodeIgniter)ですべてを実装した方法は次のとおりです。

問題は、これらのエリアの 1 つから携帯電話で写真を撮っていくつかのテストを行ったところ、写真が表示される場合と表示されない場合があることです。実装はエラーをスローしていませんが、奇妙に動作します。したがって...未回答の質問がいくつかあります。

Q: リクエストが欠落している可能性はありますか? 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);
        }
}

Q: リクエストが見つからない場合:

  • $this->live->updateGeo(cURL呼び出しが終了するのを待つ)時間が追加されたため、コールバックに時間がかかりすぎるためですか?
  • サーバーがルーマニアにあり、Instagram からのすべてのリクエストが米国の IP から来ているためですか?

生のアクセス ログを分析したところ、ときどきリクエストが急増し、その後長い沈黙が続きました。Instagram API が私に何も投稿していないか、2 秒以内に応答しないためだと思います。そうでなければ...なぜそれらのリクエストが一度に行われるのですか(数秒で5〜10のリクエスト)?たまたま 5 ~ 10 人が同時に写真を撮って、全員が携帯電話をポケットに戻しているわけではありません :)

4

0 に答える 0