2

ここのようなPHPプロキシを介してXMLAPI(フライト検索比較)にアクセスしています。

APIには、ダウンロード用の完全なファイルが常にあります。最初のバージョンでは結果が0であると記載されており、数回呼び出すと最初の結果がポップアップ表示されます。

APIドキュメントによると:

結果メソッドは常に検索結果の現在の状態を提供します。あなたはそれを複数回呼び出すことができます(多分ajax呼び出しで)

私の問題は、それがいつ行われるか、つまり、すべての結果がいつ配信されるかがわからないことです。

私はこれを試しました:

  1. まで読んでからfeof、を介してファイル位置インジケーターをリセットし、ここのようfseek()に少し待ちますが、ストリームがをサポートしていないため、これは機能しません。fseek()

  2. 秒待ってから結果を表示しますが、APIが非常に長い時間を必要とすることがあるため、これはうまく機能しません(そして私はすべてを取得していません)

  3. まで読んでから、新しいものがファイルに書き込まれたかどうかを確認するためfeofに使用しますが、後で何かを行う可能性がありません...ftell()

    $handle = fopen($flights_url, "r");
    if ($handle) {
        while (!feof($handle)) {
            $buffer = fgets($handle);
            echo $buffer;
        }
        fclose($handle);
    }
    

私は今アイデアがありません。これはどのようにうまく行う必要がありますか?

-T

編集:フォーマットを変更し、いくつかのコードを追加しました

4

1 に答える 1

0

わかりました、API の開発者の 1 人に連絡しました。

彼は、応答がいつ終了するかがわからないため、準備完了信号を送信しないと私に言いました。これは、他の非常に多くの API と連携するためです (結局のところ、これは比較 API です)。

彼が私にくれたアドバイス/解決策は、各ポーリングの間に数秒の遅延を置いて数回ポーリングし、そこにあるものを取り、残りを残すことです。

私にはエレガントというよりも実用的なように思えますが、それが彼らのやり方です:-) 情報を提供しようとしたすべての人に感謝します!

于 2012-06-17T12:52:48.037 に答える