PHP:读取由 XML API 更新的远程文件


PHP: reading a remote file that's being updated by an XML API

我正在通过PHP代理访问XML API(航班搜索比较),如下所示。

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

编辑:更改了格式并添加了一些代码

好的,我联系了 API 的一位开发人员。

他告诉我,他们不会发出准备好的信号,因为他们也不知道何时响应完成。这是因为它们与许多其他 API 一起工作(毕竟它是一个比较 API)。

他给我的建议/解决方案,他们使用的建议/解决方案是轮询几次,每次民意调查之间有几秒钟的延迟,然后只拿走那里的东西,剩下的就留下了。

对我来说似乎相当务实而不是优雅,但这就是他们的做法:-)感谢所有试图提供意见的人!