Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengekalkan Pelaksanaan PHP Selepas Menghantar Respons HTTP?

Bagaimana untuk Mengekalkan Pelaksanaan PHP Selepas Menghantar Respons HTTP?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 08:33:091021semak imbas

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

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!

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