我使用Ajax通过Twitter Bootstrap选项卡加载我div中另一个页面的内容.
我意识到Ajax加载请求的时间太长,所以我决定清理代码并只留下’session_start()’.
而问题恰恰是’session_start()’.
Microtime用于测量请求的时间.
以下是测试结果:
带有使用AJAX加载的session_start()的PHP – 29.041733980179 ms
没有AJAX加载的session_start()的PHP – 0.00010895729064941 ms
PHP没有用AJAX加载的session_start() – 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
$start = microtime(TRUE); // Start counting
set_time_limit(0);
// session_start();
$temp = microtime(TRUE) - $start;
echo $temp;
exit;
有谁知道发生了什么?
解决方法:
我有几乎相同的问题,它被称为会话锁.当您执行多个ajax调用时,服务器会阻止后一个调用的会话写入,因此他们必须等待先前的调用结束.完成会话后使用session_write_close()解锁其他调用.
这里有更多信息:session_write_close() on php.net
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。