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!