Teruskan Pelaksanaan PHP Selepas Menghantar Respons
Dalam senario di mana skrip PHP menerima mesej masuk, memprosesnya dan menghantar respons kepada pelayan yang meminta, terdapat keperluan untuk meneruskan pelaksanaan skrip PHP selepas menghantar respons awal. Ini menjadi mencabar kerana pelayan biasanya menandakan mesej sebagai dihantar apabila menerima respons HTTP 200.
Mengelakkan Penyimpanan Pangkalan Data dan Pekerjaan Cron
Daripada menggunakan menyimpan mesej dalam pangkalan data dan bergantung pada kerja cron, terdapat penyelesaian yang lebih segera. Ini melibatkan penghantaran respons HTTP 200 dan kemudian meneruskan pelaksanaan skrip PHP.
Pelaksanaan Skrip PHP
Untuk melaksanakan penyelesaian ini, ikut langkah ini dalam skrip PHP anda:
ignore_user_abort(true); // Not required but can prevent premature termination set_time_limit(0); ob_start(); // Perform initial processing here 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 script execution // ... die(); // End the script especially when set_time_limit=0 is used and the task is complete
Jujukan kod ini membenarkan skrip menghantar respons, tetapi proses PHP terus berjalan. Anda boleh melakukan pemprosesan tambahan, tugasan atau menghantar respons lain jika perlu. Adalah penting untuk memanggil die() pada penghujungnya untuk menamatkan skrip dan membebaskan sumber.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meneruskan Pelaksanaan Skrip PHP Selepas Menghantar Respons HTTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!