Ben bir veritabanında bazı değerleri güncelleştirmek için AJAX kullanarak ediyorum. Tüm bu harika ile çalıştı, ama şimdi bazı günlük şeyler uygulamak istiyorum. Kendilerinin kullanıcı onların AJAX sonuçlarını görmek için bitirmek için beklemek zorunda gerektiğini hiçbir neden işlem zaman adil bir miktar almak için gidiyoruz, ve gibi günlük işlevleri görünüyorsun.
Yani, AJAX sonuçlarını göndermek ve yine sunucu tarafında işleme devam etmek için bir yol bulmaya çalışıyorum. Benim araştırma ignore_user_abort işlevini getirdi, ama görünüşe göre doğru bir şekilde kullanarak değilim.
This guide Ben kodu kapalı dayandırarak ediyorum budur.
İşte benim javascript (jQuery) bulunuyor:
$.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);
});
}
});
Ve benim 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";
Ne yazık ki,) (floş sonra bu metni görüyorum;
Herhangi bir fikir?
Update - Fixed: Ben hatayı anladım. Farklı kod önerileri kelime ton kelime kopyaladıktan sonra, bunu benim apache / php yapılandırmasında bir hata olmalı düşündüm. Ben sonuç tampon değil apache zorlamak için iki satır eklemek gerekir çıkıyor:
apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);