Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么使用ajax查询速度慢?_Php_Jquery_Mysql_Ajax - Fatal编程技术网

Php 为什么使用ajax查询速度慢?

Php 为什么使用ajax查询速度慢?,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我用一些方法为搜索数据库创建了一个PHP类。i、 e如,全文和… 我在一个巨大的数据库上做了测试。搜索速度非常快,所以我开始在我的页面中使用这个脚本 我决定使用AJAX来加快速度 这是我的ajax代码: $.ajax({ type: "POST", data: publisher + '&blur=true', url:"server/advance2.php", ifModified: true, /* teste

我用一些方法为搜索数据库创建了一个PHP类。i、 e
全文

我在一个巨大的数据库上做了测试。搜索速度非常快,所以我开始在我的页面中使用这个脚本

我决定使用AJAX来加快速度

这是我的ajax代码:

    $.ajax({
        type: "POST",
        data: publisher + '&blur=true',
        url:"server/advance2.php",
        ifModified: true, /* tested with and without this */
        cache: true, /* tested with and without this */
        statusCode: { 404: function() {

                $('#target').html('<h4 class="col-md-offset-4 col-md-3 textRed textCenter farsi">Error...</h4>');

            }//404
        },//statusCode
        beforeSend: function() {

            $('#target').html('<img src="e995a9c2864f.gif" class="col-md-offset-4 col-md-3" alt="We are searching, please wait"/>');

        },
        success: function(result) {
            $('#target').html(result)
        }

    });//Ajax Request After Blur
$.ajax({
类型:“POST”,
数据:publisher+“&blur=true”,
url:“server/advance2.php”,
如果修改:true,/*在有或无此选项的情况下进行测试*/
cache:true,/*使用和不使用此选项进行测试*/
状态代码:{404:function(){
$('#target').html('Error…');
}//404
},//状态码
beforeSend:function(){
$('#target').html('');
},
成功:功能(结果){
$('#target').html(结果)
}
});//模糊后的Ajax请求
但搜索速度明显下降


您能告诉我为什么会发生这种情况,以及如何修复它吗?

一些快速调试的想法:

1) 打开浏览器调试器(通常从F12开始),确保响应的大部分时间都在web服务器上等待(vs渲染等)


2) 在服务器端,找到db查询日志,并查看查询本身实际需要多长时间。如其他答案所述,这里有许多活动部件。您只需要一步一步地找到比预期时间长的查询。

基准测试查询在实际代码中实际花费的时间(在SQL查询开始时和之后加上时间戳的简单日志语句就足够了)。Ajax并没有使SQL查询本身变慢。这是你的问题中没有描述的东西。回到你的方式?瓶颈在哪里?调试您的代码,以明确哪些部分运行缓慢。如果PHP代码需要很长时间来响应这个AJAX调用,那么任何人都无法知道为什么PHP代码运行缓慢而没有看到PHP代码。如果这段代码运行缓慢,那么缓慢的部分是什么?在调试器中单步执行时,哪一行代码的执行时间最长?总而言之。。。别让我们猜。调试您的代码并找出原因。@David:没有PHP分析器吗?从90年代末开始,我就没有做过很多这方面的工作,但我希望有。通过Ajax简单地调用SQL不会使SQL变慢。如果有问题,它就在别处。这可能是因为您的网站使用的查询参数与您测试的不同,但速度要慢得多。可能是(出于一些不明显的原因)Ajax回调非常慢。可能有很多因素,但Ajax神奇地使SQL查询变慢并不在其中。