我使用 Ajax 将另一个页面的内容加载到我的带有 Twitter Bootstrap 选项卡的 div 中。 我意识到 Ajax 加载请求的时间太长,所以我决定清理代码并只保留“session_start ()”。 而问题正是“session_start()”。
Microtime 用于衡量请求的时间。
以下是测试结果:
PHP WITH session_start() 加载 AJAX - 29.041733980179 毫秒
在没有 AJAX 的情况下加载带有 session_start() 的 PHP - 0.00010895729064941 毫秒
PHP WITHOUT session_start() 加载 AJAX - 1.6927719116211 毫秒
这是我的 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;
有人知道发生了什么吗?
最佳答案
我遇到了几乎相同的问题,它被称为 session 锁。当您执行多个 ajax 调用时,服务器会阻止为后一个调用写入 session ,因此它们必须等待前一个调用结束。完成 session 后使用 session_write_close()
解锁其他调用。
这里有更多信息:session_write_close() on php.net
关于javascript - 使用 AJAX 的 session 启动非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267462/