微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

发送AJAX结果,但继续使用PHP处理

我正在使用AJAX更新数据库中的某些值.所有人的工作都很棒,但是现在我想实现一些日志记录的东西.日志记录功能看起来将要花费大量的处理时间,因此用户无须等待它们完成以查看其AJAX结果.

因此,我试图找到一种发送AJAX结果并且仍然继续在服务器端进行处理的方法.我的研究提出了ignore_user_abort函数,但是显然我没有正确使用它.

This guide是我基于代码的基础.

这是我的JavaScript(Jquery):

 $.ajax({
            type: "GET",
            url: "ajax.PHP",
            data: { "mydata": mydata },
            success: function(msg) {
                    $("span#status").fadeOut(200, function() {
                            $("span#status").html(msg);
                            $("span#status").fadeIn(200);
                    });

            }
    });

而我的PHP

    $response = "This is my response";

    //Begin code from link
    ob_end_clean();
    header("Connection: close");
    ignore_user_abort(true);
    ob_start();
    echo $response;
    header("Content-Length: " . mb_strlen($response));
    ob_end_flush();
    flush();
    //End code from link

    echo "I should not see this text";

不幸的是,我在flush()之后看到了该文本;

有任何想法吗?

更新-修复:我发现了我的错误.在逐字地复制大量不同的代码建议后,我发现这肯定是我的apache / PHP配置中的错误.原来我需要添加两行来强制apache不缓冲我的结果:

apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);

解决方法:

好吧,你会看到的,不是吗?你告诉它回声!

认真地说,您的榜样应该有效.刷新后似乎正在执行代码,因此,如果刷新将请求发送到浏览器,则应该能够进行日志记录.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐