Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Melaksanakan Kod PHP Selepas Menghantar Respons HTTP?

Bagaimanakah Saya Boleh Melaksanakan Kod PHP Selepas Menghantar Respons HTTP?

Susan Sarandon
Susan Sarandonasal
2024-12-30 22:19:11820semak imbas

How Can I Execute PHP Code After Sending an HTTP Response?

Melaksanakan PHP Selepas Penghantaran Respons

Skrip PHP sering menghadapi keperluan untuk memproses data selanjutnya selepas membalas permintaan pelayan. Satu senario sedemikian melibatkan pengendalian parameter mesej masuk ("ID_OF_MESSAGE" dan "TEXT_OF_MESSAGE") dan menjana respons dengan param "ANSWER_TO_ID" dan "RESPONSE_MESSAGE".

Walau bagaimanapun, menghantar respons HTTP 200 kepada pelayan akan serta-merta menandakan mesej seperti yang dihantar pada bahagian pelayan. Ini menimbulkan dilema kerana penjanaan respons segera adalah penting.

Untuk mengatasinya, anda boleh:

ignore_user_abort(true); //optional
set_time_limit(0);

ob_start();
// Handle initial processing
echo $response; // Send the response
header('Connection: close');
header('Content-Length: '.ob_get_length());
ob_end_flush();
@ob_flush();
flush();
fastcgi_finish_request(); //required for PHP-FPM (PHP > 5.3.3)

// Continue processing after request dispatch
die(); // Ensure script termination

Dengan menetapkan ignore_user_abort() dan set_time_limit(0), skrip boleh terus dilaksanakan selama-lamanya . Fungsi ob_* menghantar pengepala dan badan respons serta-merta. Pernyataan die() menamatkan skrip, yang diperlukan untuk mengelakkan pelaksanaan infiniti apabila set_time_limit(0) digunakan.

Teknik ini membolehkan anda mengendalikan permintaan masuk, menghantar respons dan terus memproses skrip PHP anda tanpa menunggu untuk penyemak imbas menerima respons penuh.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kod 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