【发布时间】:2012-06-13 00:54:34
【问题描述】:
我正在通过 PHP 代理 like here 访问 XML API(航班搜索比较)。
API 始终有一个完整的文件供下载。第一个版本说有 0 个结果,然后调用它几次后弹出第一个结果。
API 文档说:
结果方法将始终为您提供当前状态 搜索结果。您可以多次调用它(可能使用 ajax 调用)
我的问题是,我不知道什么时候完成,即所有结果什么时候交付。
我试过了:
-
读到
feof,然后通过fseek()重置文件位置指示器并稍等like here,但这不起作用,因为流不支持fseek()。 -
等待 几秒 秒,然后显示结果,但这并不好用,因为 API 有时需要很长时间(而且我没有得到所有内容)
-
读到
feof,然后用ftell()查看是否有新的东西写入文件,但我没有做事的可能性......$handle = fopen($flights_url, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); echo $buffer; } fclose($handle); }
我现在没有主意了。这应该如何以一种好的方式完成?
-T
编辑:更改格式并添加一些代码
【问题讨论】:
-
XML API 就像您在发出 http 请求一样?然后您会收到文件的快照,而不是流,对吗?您的
fopen或等效电话是什么样的? -
这在很大程度上取决于您使用的 API。没有通用的方法来完成您的要求。
-
@MikeB:添加了一些代码。
-
@lanzz:对于这个具体案例有什么建议吗?
-
您应该阅读 API 的文档并弄清楚它们如何发出处理结束的信号。