Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:读取一个远程文件,其中';正在由XML API更新_Php_Ajax_File Io_Proxy - Fatal编程技术网

PHP:读取一个远程文件,其中';正在由XML API更新

PHP:读取一个远程文件,其中';正在由XML API更新,php,ajax,file-io,proxy,Php,Ajax,File Io,Proxy,我正在通过PHP代理访问XMLAPI(航班搜索比较) API总是有完整的文件供下载。第一个版本声明有0个结果,然后在调用它几次后,第一个结果弹出 API文档说明: result方法将始终为您提供 搜索结果。您可以多次调用它(可能使用ajax调用) 我的问题是,我不知道何时完成,即何时交付所有结果 我试过这个: 读取直到feof,然后通过fseek()重置文件位置指示器,然后稍等片刻,但这不起作用,因为流不支持fseek() 等待几秒钟,然后显示结果,但这并不好用,因为API有时需要很长时间(我没

我正在通过PHP代理访问XMLAPI(航班搜索比较)

API总是有完整的文件供下载。第一个版本声明有0个结果,然后在调用它几次后,第一个结果弹出

API文档说明:

result方法将始终为您提供 搜索结果。您可以多次调用它(可能使用ajax调用)

我的问题是,我不知道何时完成,即何时交付所有结果

我试过这个:

  • 读取直到
    feof
    ,然后通过
    fseek()
    重置文件位置指示器,然后稍等片刻,但这不起作用,因为流不支持
    fseek()

  • 等待几秒钟,然后显示结果,但这并不好用,因为API有时需要很长时间(我没有得到所有信息)

  • 一直读到feof,然后使用ftell()查看文件中是否写入了新内容,但我没有可能在以后做些什么

    $handle = fopen($flights_url, "r");
    if ($handle) {
        while (!feof($handle)) {
            $buffer = fgets($handle);
            echo $buffer;
        }
        fclose($handle);
    }
    
  • 我现在没有主意了。如何以一种好的方式完成这项工作

    -T


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

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

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

    他给我的建议/解决方案是投票几次,每次投票之间有几秒钟的延迟,然后把剩下的都拿走


    在我看来,这似乎是务实而不是优雅的,但他们就是这样做的:-)感谢所有试图提供意见的人

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

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

    他给我的建议/解决方案是投票几次,每次投票之间有几秒钟的延迟,然后把剩下的都拿走


    在我看来,这似乎是务实而不是优雅的,但他们就是这样做的:-)感谢所有试图提供意见的人

    XML API,就像您正在发出http请求一样?然后会向您发送文件的快照,而不是流,对吗?您的
    fopen
    或等效调用是什么样子的?这在很大程度上取决于您使用的API。没有通用的方法来完成您的要求。@MikeB:添加了一些代码。@lanzz:那么对于这种特定情况有什么建议吗?您应该阅读API的文档,并弄清楚它们是如何发出处理结束的信号的。XML API就像您发出http请求一样?然后会向您发送文件的快照,而不是流,对吗?您的
    fopen
    或等效调用是什么样子的?这在很大程度上取决于您使用的API。没有通用的方法来完成您的要求。@MikeB:添加了一些代码。@lanzz:那么对于这种特定情况有什么建议吗?您应该阅读API的文档,并找出它们是如何表示处理结束的。