Php-ajax部分响应(如果可用)

Php-ajax部分响应(如果可用),php,ajax,httprequest,Php,Ajax,Httprequest,我有一个好奇的问题,似乎没有找到正确的短语来表达我的意思,一个成功的谷歌搜索查询 一些网站(主要进行价格查询)使用用户设置的条件对某些内容(假设它是php脚本)进行ajax查询,当查询完成时,数据不会一次全部显示出来,但您会看到响应中的一些部分在较早时(我假设它们在较早时可用)和稍后显示出来 我可以想象ajax请求是对php脚本执行的,php脚本反过来查询不同的源并尽快返回数据,这意味着首先发送更快的查询响应 核心问题: 如何构建php脚本可以返回数据的机制 多次,ajax脚本不只是等待响应 我

我有一个好奇的问题,似乎没有找到正确的短语来表达我的意思,一个成功的谷歌搜索查询

一些网站(主要进行价格查询)使用用户设置的条件对某些内容(假设它是php脚本)进行ajax查询,当查询完成时,数据不会一次全部显示出来,但您会看到响应中的一些部分在较早时(我假设它们在较早时可用)和稍后显示出来

我可以想象ajax请求是对php脚本执行的,php脚本反过来查询不同的源并尽快返回数据,这意味着首先发送更快的查询响应

核心问题:

如何构建php脚本可以返回数据的机制 多次,ajax脚本不只是等待响应

我相当肯定有关于这方面的信息可用,但不幸的是,我们甚至无法找到搜索它的术语

编辑:

我认为一个很好的例子是廉价机票预订服务,它查询不同的来源,并且似乎在数据可用时立即输出数据,这意味着不同航空公司的不同报价在不同的时间出现

希望有人能解除我的好奇心

最好的


Alari

在客户端,您需要
onprogress
。请参见以下示例(复制自):

xhr.responseText
将不断累积服务器给出的响应。这里的缺点是
xhr.responseText
包含一个累积响应。您可以在其上使用
子字符串
,仅获取当前响应

在服务器端,您可以执行输出缓冲以将响应分块,例如:

<?php
header( 'Content-type: text/html; charset=utf-8' );
for($i = 0; $i < 100; $i++){
    echo "Current Response is {$i} \r\n";
    flush();
    ob_flush();
    // sleep for 2 seconds
    sleep(2);
}

因此,请在此类网站上打开开发人员控制台,看看发生了什么。我已经尝试过了,整个脚本都被缩小了,我真的不知道发生了什么,甚至不知道从何处发起呼叫。谢谢您的回答,这类功能是否有名称或术语,以便我可以做进一步的研究?是的,搜索<代码>分组Ajax响应< /代码>,如果答案有所帮助,请考虑接受它:
<?php
header( 'Content-type: text/html; charset=utf-8' );
for($i = 0; $i < 100; $i++){
    echo "Current Response is {$i} \r\n";
    flush();
    ob_flush();
    // sleep for 2 seconds
    sleep(2);
}