Bagaimana untuk Mengekalkan Pelaksanaan PHP Selepas Menghantar Respons HTTP?

Patricia Arquette
Lepaskan: 2024-11-26 08:33:09
asal
935 orang telah melayarinya

How to Maintain PHP Execution After Sending an HTTP Response?

Mengekalkan Pelaksanaan PHP Selepas Respons HTTP

Mengekalkan pelaksanaan PHP di luar respons HTTP memerlukan pertimbangan khusus, terutamanya dalam persekitaran seperti mod_php. Untuk menangani cabaran ini, penyelesaian berikut dibentangkan:

Untuk menghantar respons HTTP sambil meneruskan pelaksanaan PHP, anda boleh memanfaatkan coretan kod berikut:

<?php
ob_end_clean();
header("Connection: close");
ignore_user_abort(); // Optional
ob_start();
echo('Text the user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Enable strange behavior
flush();            // Required for behavior to work
session_write_close(); // Suggested enhancement to ensure session data is saved
// Perform processing here
sleep(30);
echo('Text user will never see');
?>
Salin selepas log masuk

Kod ini melakukan langkah berikut :

  1. Membersihkan penimbal output.
  2. Menetapkan Pengepala "Sambungan: tutup" untuk menamatkan sambungan HTTP.
  3. Mengabaikan sebarang percubaan pengguna untuk membatalkan skrip (pilihan).
  4. Memulakan penimbal keluaran baharu untuk menangkap sebarang output yang tinggal.
  5. Menghasilkan mesej kepada pengguna (yang akan dipaparkan serta-merta).
  6. Mengira panjang penimbal keluaran dan menetapkan pengepala "Panjang Kandungan".
  7. Membuat penimbal output untuk menghantar pengepala respons dan mesej kepada klien.
  8. Menutup sesi untuk memastikan sebarang perubahan yang dibuat disimpan.
  9. Melaksanakan sebarang pemprosesan yang diperlukan, yang boleh mengambil masa sehingga satu minit.
  10. Menghasilkan sebarang tambahan mesej atau hasil carian (ini tidak akan dihantar kepada pelanggan).

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Pelaksanaan PHP Selepas Menghantar Respons HTTP?. 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