wordpress ajax一直在失去联系

时间:2015-07-13 13:15:28

标签: wordpress connection keep-alive heartbeat admin-ajax

我很抱歉我不再是WP和ajax的新手,但我需要你的帮助。我不确定它是不是一个错误,或者只是我无法找到解决方案。

我有以下情况。

我的插件显示来自远程mysql服务器的某些数据。这些数据需要定期更新。

目前我通过AJAX或多或少实现了这一点,如下所示:

$.ajax({
    type : "POST",
    url: cktn_ajax_object.ajax_url,
    data: params,
    dataType: "json",
        success: function(response) {
        << Update  UI according to response >>
    },
    error: function(request, status, err) {
        console.debug("[AjaxOnTimer Error] status: " + status);
    }
});

其中$.ajax正在调用负责检索远程mysql数据的相关php脚本。 PHP脚本持续时间是可变的,根据它提取的数据量(假设在几秒到四五分钟之间)。

如果我在本地机器上测试整体,那就没问题了。 ajax调用正确且耐心地等待本地 PHP服务器(它正在查询远程 mysql服务器)的(慢)响应,并最终在完成后更新我的UI

另一方面,当我在生产机器上安装我的插件时,事情并没有按预期工作。将我的ajax调用放到PHP服务器后几秒钟,我在浏览器的控制台中收到以下错误:

  

无法加载资源:连接丢失。 ---&GT;管理员-ajax.php

并且我的脚本失败了,除了error中的“ <body> <p> <a href="http://www.zz.com/abc/z/0/z3970z88-0475-11dz-8603-00144zeabdc1.html#slide0"></a> Some <strong>strong</strong> text </p> </body> ”状态之外,没有其他任何线索。 ajax调用的参数。

显然heartbeat.lock-post干扰了我的ajax调用。 我知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

将以下内容添加到functions.php以关闭心跳:

add_action( 'init', 'my_deregister_heartbeat', 1 );
function my_deregister_heartbeat() {
    global $pagenow;

    if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow )
        wp_deregister_script('heartbeat');
}

然后重启apache。

答案 1 :(得分:-2)

不确定您的问题是否已解决。但如果有人今天遇到同样的问题,我已经使用此处提供的Heartbeat Control插件解决了这个问题:https://wordpress.org/plugins/heartbeat-control/