PHP:读取一个远程文件,其中';正在由XML API更新
我正在通过PHP代理访问XMLAPI(航班搜索比较) API总是有完整的文件供下载。第一个版本声明有0个结果,然后在调用它几次后,第一个结果弹出 API文档说明: result方法将始终为您提供 搜索结果。您可以多次调用它(可能使用ajax调用) 我的问题是,我不知道何时完成,即何时交付所有结果 我试过这个:PHP:读取一个远程文件,其中';正在由XML API更新,php,ajax,file-io,proxy,Php,Ajax,File Io,Proxy,我正在通过PHP代理访问XMLAPI(航班搜索比较) API总是有完整的文件供下载。第一个版本声明有0个结果,然后在调用它几次后,第一个结果弹出 API文档说明: result方法将始终为您提供 搜索结果。您可以多次调用它(可能使用ajax调用) 我的问题是,我不知道何时完成,即何时交付所有结果 我试过这个: 读取直到feof,然后通过fseek()重置文件位置指示器,然后稍等片刻,但这不起作用,因为流不支持fseek() 等待几秒钟,然后显示结果,但这并不好用,因为API有时需要很长时间(我没
feof
,然后通过fseek()
重置文件位置指示器,然后稍等片刻,但这不起作用,因为流不支持fseek()
$handle = fopen($flights_url, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle);
echo $buffer;
}
fclose($handle);
}
编辑:更改了格式并添加了一些代码好的,我联系了API的一位开发人员 他告诉我,他们没有发出准备就绪的信号,因为他们也不知道响应何时完成。这是因为它们与许多其他API一起工作(毕竟这是一个比较API) 他给我的建议/解决方案是投票几次,每次投票之间有几秒钟的延迟,然后把剩下的都拿走
在我看来,这似乎是务实而不是优雅的,但他们就是这样做的:-)感谢所有试图提供意见的人 好的,我联系了API的一位开发人员 他告诉我,他们没有发出准备就绪的信号,因为他们也不知道响应何时完成。这是因为它们与许多其他API一起工作(毕竟这是一个比较API) 他给我的建议/解决方案是投票几次,每次投票之间有几秒钟的延迟,然后把剩下的都拿走
在我看来,这似乎是务实而不是优雅的,但他们就是这样做的:-)感谢所有试图提供意见的人 XML API,就像您正在发出http请求一样?然后会向您发送文件的快照,而不是流,对吗?您的
fopen
或等效调用是什么样子的?这在很大程度上取决于您使用的API。没有通用的方法来完成您的要求。@MikeB:添加了一些代码。@lanzz:那么对于这种特定情况有什么建议吗?您应该阅读API的文档,并弄清楚它们是如何发出处理结束的信号的。XML API就像您发出http请求一样?然后会向您发送文件的快照,而不是流,对吗?您的fopen
或等效调用是什么样子的?这在很大程度上取决于您使用的API。没有通用的方法来完成您的要求。@MikeB:添加了一些代码。@lanzz:那么对于这种特定情况有什么建议吗?您应该阅读API的文档,并找出它们是如何表示处理结束的。