Bagaimana untuk Menghantar Respons HTTP dalam PHP dan Meneruskan Pelaksanaan untuk Proses Berlangsung Lama?

Mary-Kate Olsen
Lepaskan: 2024-11-16 12:30:03
asal
268 orang telah melayarinya

How to Send HTTP Responses in PHP and Continue Execution for Long-Running Processes?

Menghantar Respons HTTP dalam PHP dan Pelaksanaan Berterusan

Apabila berhadapan dengan operasi yang memakan masa yang melebihi tamat masa aplikasi web, pembangun sering mencari penyelesaian untuk meneruskan pelaksanaan PHP di luar HTTP penyampaian respons. Dalam kes khusus ini, cabarannya adalah untuk membolehkan PHP menghantar respons HTTP yang lengkap dengan segera sambil pada masa yang sama memulakan dan melengkapkan pemprosesan pangkalan data dan e-mel dalam tempoh masa yang ditetapkan selama satu minit.

Kaedah yang paling mudah ialah menggunakan ob_end_flush( ) dan flush() berfungsi secara strategik. Dengan menamatkan proses penimbalan output dan melepaskan pengepala HTTP bersama teks yang boleh dilihat oleh pengguna, skrip secara berkesan menandakan penyelesaian respons kepada klien.

Berikut ialah contoh coretan kod yang menunjukkan pendekatan ini:

ob_end_clean();
header("Connection: close");
ignore_user_abort(); // Disable abort
ob_start();
echo ('Success message for the user');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Flush the initial content
flush();            // Ensure proper flushing
session_write_close(); 
// Delegate time-consuming tasks here
sleep(30);
echo('Tasks completed after 30 seconds');
Salin selepas log masuk

Dengan pendekatan ini, skrip memberitahu pelanggan tentang operasi yang berjaya dan memulakan tugasan yang memakan masa berikutnya tanpa menyebabkan aplikasi tamat masa.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Respons HTTP dalam PHP dan Meneruskan Pelaksanaan untuk Proses Berlangsung Lama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan