У меня есть Ajax для загрузки содержимого другой страницы в моем div с вкладками Twitter Bootstrap. Я понял, что Ajax слишком долго загружает запрос, поэтому я решил очистить код и оставить только "session_start()". И проблема в том, что именно "session_start()".
Microtime используется для измерения времени запросов.
Ниже приведены результаты тестов:
PHP С session_start(), загруженный AJAX - 29.041733980179 ms
PHP с session_start(), загруженный без AJAX - 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;
Кто-нибудь знает, что происходит?
У меня была почти такая же проблема, она называется блокировкой сеанса. Когда вы выполняете несколько вызовов ajax, сервер предотвращает запись сеанса для последних вызовов, поэтому им приходится ждать завершения предыдущих вызовов. Используя session_write_close()
, когда вы закончите сеанс, разблокируйте другие вызовы.
Здесь дополнительная информация: session_write_close() на php.net
session_start
начнет сеанс, загружает ли он очень большой набор данных?