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');
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!