在回显到AJAX回调之后执行PHP

时间:2015-01-27 09:40:02

标签: javascript php jquery ajax json

我有这个ajax电话:

App.prototype.askServer= function(obj) {

    return $.ajax({
        type: "POST",
        dataType: 'json',
        url: 'php/ajax.php',
        data: {
            stuff: obj
        }
    }).success(function(data) {
        console.log(data);
    });
}

我的ajax.php看起来像这样:

<?php

$stuff = $_POST['stuff'];

// execute curl that takes 1 second

echo $response

// parse $response through multiple loops and save into files and databases
// takes 5 seconds

?>

一旦PHP脚本echo出现问题,ajax回调是否会立即执行?或者它会等待整个PHP脚本执行?换句话说:我的ajax回调会在1或6秒后执行吗?

我问的原因是因为我从curl获得了相当大的JSON。我想将它返回到ajax回调,之后,我想将这些数据分开,将一些内容保存到数据库中,将其他数据保存到JSON文件中等等。这需要一段时间,但客户端不必等待它。

2 个答案:

答案 0 :(得分:1)

可以在PHP继续执行脚本的同时提前关闭连接。

您需要在PHP脚本中定义ignore_user_abort(true);并在flush();之后立即致电echo $response; 脚本继续执行,但连接将被关闭,导致Ajax回调执行。

答案 1 :(得分:0)

您需要拆分处理。只需注册您的用户请求并稍后处理。有几个所谓的消息队列或工作队列可用于PHP。你可能想看看RabbitMQ