Perbezaan antara cgi dan fcgi dalam php: cgi ialah singkatan "antara muka gerbang biasa", yang merujuk kepada antara muka gerbang biasa, manakala fcgi ialah singkatan daripada "antara muka gerbang biasa pantas", yang merujuk kepada antara muka gerbang biasa yang pantas. "php-cgi" ialah pelaksanaan protokol CGI, dan "PHP-FPM" ialah pelaksanaan protokol FCGI.
Persekitaran pengendalian artikel ini: sistem Windows 10, PHP versi 8.1, komputer Dell G3
CGI: antara muka get laluan biasa Antara muka get laluan biasa
FCGI: antara muka get laluan biasa pantas Antara muka get laluan biasa pantas
php-cgi ialah pelaksanaan protokol CGI, dan PHP-FPM ialah pelaksanaan protokol FCGI .
CGI ialah antara muka protokol untuk komunikasi antara pelayan web seperti nginx dan bahasa skrip dinamik bahagian belakang seperti PHP.
Perluaskan pengetahuan
1 Senario:
Pelayar meminta web pelayan Contohnya, jika nginx meminta index.html statik, nginx boleh mengembalikannya terus. Tetapi jika permintaan adalah idex.php, nginx mendapati bahawa ia bukan sumber statik mengikut konfigurasi, dan perlu meminta perkhidmatan back-end. Jadi, apabila nginx meminta perkhidmatan back-end, dalam format apa dan jenis data apa yang perlu dihantar ke perkhidmatan back-end? CGI ialah protokol yang mentakrifkan format dan data.
2. Kelemahan protokol CGI:
Protokol CGI mesti memulakan program yang melaksanakan protokol CGI setiap kali ia meminta perkhidmatan back-end penghurai PHP. Penghurai PHP akan menghuraikan fail PHP.ini, melaksanakan kerja permulaan, memproses permintaan dan mengembalikan hasil. Setiap permintaan mesti dimulakan semula, yang merupakan kerja yang terlalu berlebihan. Oleh itu, FCGI wujud.
Oleh kerana PHP ialah bahasa yang ditafsirkan, jurubahasa diperlukan untuk mentafsir kod PHP.
3. Kelebihan FCGI:
Protokol FCGI mula-mula memulakan induk, yang digunakan untuk menghuraikan fail PHP.ini dan melaksanakan kerja pemula. Mulakan berbilang pekerja dan pekerja digunakan untuk memproses permintaan tertentu. Ini memisahkan pemulaan dan memproses permintaan khusus. Ini juga memerlukan program untuk mengurus tuan dan pekerja, jadi PHP-FPM muncul.
FCGI menggunakan seni bina C/S. Asingkan pelayan web daripada pelayan penghuraian skrip. Jadikan pelayan web hanya memproses sumber statik dan kembalikan data yang dikembalikan oleh pelayan penghuraian skrip bahagian belakang kepada penyemak imbas.
Pelayan web nginx tidak menyokong panggilan terus atau penghuraian atur cara luaran seperti program PHP, jadi ia mesti dipanggil melalui antara muka CGI. Ini sebenarnya memerlukan enkapsulasi CGI untuk membentuk pembungkus, yang sebenarnya PHP-FPM. nginx memanggil PHP-FPM, PHP-FPM kemudian memanggil kod PHP bahagian belakang, dan kemudian PHP-FPM mengembalikan hasilnya kepada nginx.
Kini PHP-FPM telah disepadukan ke dalam teras PHP.
PHP-FPM dan nginx sering digunakan pada pelayan yang berbeza untuk mengurangkan tekanan pada nginx bahagian hadapan untuk memproses sumber statik dan permintaan dinamik ke hadapan.
Dan FCGI lebih selamat daripada CGI.
4. Pelaksanaan protokol CGI PHP-CGI
Jika fail php.ini diubah suai, PHP-CGI tidak boleh beralih dengan lancar. Iaitu, program PHP-CGI mesti dimulakan semula untuk menggunakan konfigurasi baharu ini.
5. Pelaksanaan protokol FCGI PHP-FPM
Jika fail php.ini diubah suai, PHP-FPM boleh mencapai peralihan yang lancar. Untuk pekerja sebelum pengubahsuaian, selepas memproses permintaan, ia akan dimusnahkan dan pekerja yang baru dijana boleh menggunakan konfigurasi baharu. Ini juga mencapai peralihan yang lancar.
Lebih-lebih lagi, jika proses PHP-CGI hang, PHP tidak akan dapat dijalankan. PHP-FPM tidak mempunyai masalah ini, daemon akan memulakan semula proses kanak-kanak dengan lancar.
Sebelum PHP-FPM muncul, sebenarnya terdapat spawn-fcgi, yang dibangunkan daripada lighthttpd. PHP-FPM boleh mencipta berbilang pekerja semasa pemulaan, dan apabila pekerja melahu, pekerja itu boleh dikitar semula.
spawn-fcgi boleh menyebabkan kebocoran memori atau malah secara automatik memulakan semula FCGI apabila konkurensi tinggi.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apakah perbezaan antara cgi dan fcgi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!