为AJAX请求并行获取Apache PHP响应

时间:2018-06-17 06:06:56

标签: php jquery angularjs ajax apache

我的AJAX请求大约需要7秒钟才能完成。对于一个页面,我有很多这样的请求。服务器几乎按顺序响应每个请求。对于10个请求,我在1分钟后收到最后一个请求。有没有办法独立获得答案?我只是尝试使用$ http.get和jQuery AJAX进行调用。 我希望在7秒的处理时间后立即得到所有请求的响应 例如,My $ http.get代码如下:

$q.all([
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 0),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 1),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 2),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 3),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 4),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 5),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 6),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 7),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 8),
            $http.get('http://localhost/ajaxtest/index.php?route=test/sleepTest&seq=' + 9)
        ])
            .then(function(responses) {
                console.log( responses[0].data);
                console.log( responses[1].data);
                console.log( responses[2].data);
            });

在服务器端,我正在运行sleep()函数以进行测试。代码如下:

public function sleepTest(){
    session_write_close();
    sleep(10);
    print $this->request->get["seq"];
}

XHTTP请求结果一个接一个地发生(在上一个响应发生后大约10秒)。请参阅屏幕截图中的响应时间,服务器在上一次响应10秒后响应每个请求。 最后一次响应是在100秒后发生的,而我预计所有响应都会在10秒后发出。

更新:有些导师提到另一个问题已经接受了答案,但答案并不清楚。我按照推荐的文件,但无法得到我的期望。添加session_write_close();部分地帮助我,它平行地做出6个响应,这意味着我一次从服务器6获得AJAX响应。我还能做些什么来并行地获得所有(10+)个响应吗?

Screenshot of requests and responses with time

更新截图: Updated Screenshot of requests and responses with time

0 个答案:

没有答案