Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menutup Sambungan PHP Awal Selepas Memulakan Proses Berlangsung Lama melalui AJAX?

Bagaimanakah Saya Boleh Menutup Sambungan PHP Awal Selepas Memulakan Proses Berlangsung Lama melalui AJAX?

DDD
DDDasal
2024-12-29 07:06:09399semak imbas

How Can I Close a PHP Connection Early After Initiating a Long-Running Process via AJAX?

Menutup Sambungan Awal

Pertanyaan ini menangani cabaran menutup sambungan sebelum melengkapkan skrip PHP. Matlamatnya adalah untuk memulakan proses yang panjang melalui AJAX tetapi mengembalikan respons yang menunjukkan permulaannya tanpa menunggu skrip PHP selesai.

Menurut manual PHP, menamatkan sambungan TCP tanpa menamatkan skrip PHP melibatkan lebih daripada hanya menghantar tajuk "tutup". Nota pengguna #71172 (November 2006) menyediakan penyelesaian yang komprehensif:

<?php
ob_end_clean();
header("Connection: close");
ignore_user_abort(true);
ob_start();
echo('Text the user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
// Do processing here 
sleep(30);
echo('Text user will never see');
?>

Untuk penyelesaian itu berfungsi, adalah penting untuk melumpuhkan penimbalan output, membersihkan penimbal dan kemudian menghantar maklumat pengepala. Walaupun menghantar pengepala "tutup" adalah perlu, ia tidak mencukupi untuk menutup sambungan serta-merta.

Nota pengguna berikutnya #89177 (Februari 2009) dan #93441 (September 2009) memberikan cerapan tambahan tentang pengendalian sambungan dan membantu menjelaskan nuansa penutupan sambungan awal dalam PHP.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menutup Sambungan PHP Awal Selepas Memulakan Proses Berlangsung Lama melalui AJAX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn