Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh memastikan pelaksanaan PHP tetap hidup selepas menghantar respons HTTP kepada klien?

Bagaimanakah saya boleh memastikan pelaksanaan PHP tetap hidup selepas menghantar respons HTTP kepada klien?

Barbara Streisand
Barbara Streisandasal
2024-11-15 04:17:02734semak imbas

How can I keep PHP execution alive after sending the HTTP response to the client?

Mengekalkan Pelaksanaan PHP Alive Post-HTTP Response

Dalam persekitaran di mana PHP berjalan sebagai mod_php Apache, cabaran biasa timbul dalam mengekalkan pelaksanaan PHP selepas menghantar respons HTTP kepada klien. Kekangan ini berpunca daripada keperluan untuk melaporkan mesej ralat kepada aplikasi dalam tempoh tamat masa tertentu.

Untuk menangani isu ini, kuncinya terletak pada menghantar respons HTTP seawal mungkin tanpa mengganggu operasi yang sedang berjalan. Satu kaedah yang berkesan melibatkan penggunaan coretan kod berikut:

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();
flush();
session_write_close(); // Added per suggestion
// Do processing here
sleep(30);
echo('Text user will never see');

Coretan ini pada mulanya membuang sebarang output yang belum selesai dan mengkonfigurasi sambungan HTTP untuk ditutup. Dengan mengabaikan percubaan pengguguran yang dimulakan pengguna dan menentukan panjang kandungan, respons HTTP dihantar dengan berkesan. Selepas itu, pemprosesan berterusan boleh dilaksanakan, seperti operasi pangkalan data atau penghantaran e-mel.

Dengan menggunakan kaedah ini, PHP boleh menghantar respons HTTP lengkap kepada klien dan meneruskan pelaksanaan untuk tempoh masa tertentu, menyelesaikan isu dengan berkesan had pelaporan ralat yang dikenakan oleh aplikasi luaran. Pendekatan ini amat berguna dalam senario di mana operasi yang memakan masa mesti dilakukan tanpa melebihi tamat masa yang telah ditetapkan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memastikan pelaksanaan PHP tetap hidup selepas menghantar respons HTTP kepada klien?. 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