使用AJAX,Session Start非常慢

时间:2013-11-28 13:27:05

标签: javascript php jquery ajax twitter-bootstrap

我使用Ajax通过Twitter Bootstrap选项卡加载我div中另一个页面的内容。 我意识到Ajax加载请求的时间太长,所以我决定清理代码并只留下'session_start()'。 而问题恰恰是'session_start()'。


Microtime用于衡量请求的时间。 以下是测试结果:

PHP with session_start()用AJAX加载 - 29.041733980179 ms
没有AJAX加载的session_start()的PHP - 0.00010895729064941 ms

PHP WITHOUT session_start()用AJAX加载 - 1.6927719116211 ms


这是我的Javascript代码:

$(function() {
        $("#MainTabs").tab();
        $("#MainTabs").bind("show", function(e) {
          var contentID  = $(e.target).attr("data-target");
          var contentURL = $(e.target).attr("href");
          if (typeof(contentURL) != 'undefined')

        $(contentID).html('<img src="<?php echo IMG_DIR; ?>loading/loading-large.gif" width="64" />').load(contentURL, function(){
            $("#MainTabs").tab();
        });
          else
        $(contentID).tab('show');
        });
        $('#MainTabs a:first').tab("show");
});

这是我的PHP代码:

<?php
    $start = microtime(TRUE); // Start counting

    set_time_limit(0);

    // session_start();

    $temp = microtime(TRUE) - $start;
    echo $temp; 

    exit;

有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:4)

我遇到了几乎相同的问题,它被称为会话锁。当您执行多个ajax调用时,服务器会阻止后一个调用的会话写入,因此他们必须等待先前的调用结束。完成会话后使用session_write_close()解锁其他通话。

以下是更多信息:session_write_close() on php.net