Я использую AJAX для обновления некоторых значений в базе данных. Все прекрасно с этим справилось, но теперь я хотел бы реализовать кое-что из журналов. Функции ведения журнала выглядят так, как будто они отнимают достаточно много времени на обработку, и у них нет причин, чтобы пользователю приходилось ждать, пока они закончат, чтобы увидеть результаты AJAX.
Итак, я пытаюсь найти способ отправки результатов AJAX и все еще продолжаю обработку на стороне сервера. Мое исследование выявило функцию ignore_user_abort, но, видимо, я не правильно ее использую.
Это руководство - это то, на чем я основываю свой код.
Вот мой javascript (Jquery):
$.ajax({
type: "GET",
url: "ajax.php",
data: { "mydata": mydata },
success: function(msg) {
$("span#status").fadeOut(200, function() {
$("span#status").html(msg);
$("span#status").fadeIn(200);
});
}
});
И мой PHP:
$response = "This is my response";
//Begin code from link
ob_end_clean();
header("Connection: close");
ignore_user_abort(true);
ob_start();
echo $response;
header("Content-Length: " . mb_strlen($response));
ob_end_flush();
flush();
//End code from link
echo "I should not see this text";
К сожалению, я вижу этот текст после сброса ();
Есть идеи?
Обновление - Исправлено: Я разобрался в своей ошибке. После того, как я дословно скопировал кучу разных предложений кода, я понял, что в моей конфигурации apache / php произошла ошибка. Оказывается, мне нужно добавить две строки, чтобы заставить apache не буферизовать мои результаты:
apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);