PHP: Apa kelebihan FastCGI dibandingkan mod_php?

30

Baru-baru ini saya sarankan agar saya menggunakan FastCGI dengan PHP. Sekarang saya pergi ke halaman FastCGI dan membacanya tetapi saya tidak begitu mengerti apa kelebihannya.

cletus
sumber

Jawaban:

37

Dengan menggunakan mod_php, setiap pekerja Apache memiliki seluruh penerjemah PHP yang dimasukkan ke dalamnya. Karena Apache membutuhkan satu proses pekerja per permintaan yang masuk, Anda dapat dengan cepat berakhir dengan ratusan pekerja Apache yang digunakan, masing-masing dengan penerjemah PHP sendiri, menghabiskan banyak memori.

(Catatan, ini tidak sepenuhnya benar, Apache worker_mpmmemungkinkan Anda untuk melayani banyak permintaan dengan satu pekerja Apache berulir. Namun, bahkan pada tahun 2009, ini bukan cara yang disarankan untuk menggunakan PHP karena dugaan masalah threading dengan ekstensi PHP.)

Dengan menggunakan PHP dalam mode fast_cgi (menggunakan sesuatu seperti spawn-fcgi dari paket lighttpd) memiliki manfaat berikut

  • tune jumlah pekerja PHP secara terpisah dari jumlah koneksi yang masuk
  • memungkinkan Anda untuk menempatkan Anda pekerja PHP di server yang berbeda, atau skala di banyak server tanpa mengubah tingkat web Anda
  • memberi Anda fleksibilitas untuk memilih server web yang berbeda, seperti nginx , atau lighttpd
  • memungkinkan Anda menjalankan aplikasi PHP di domain keamanan berbeda di server web Anda
Dave Cheney
sumber
5

FastCGI berarti bahwa bit php tidak berjalan dalam proses yang sama dengan bit apache, tidak seperti dengan mod_php. Pemisahan ini dapat memiliki beberapa keuntungan yang pasti ketika datang untuk me-restart server atau berurusan dengan aplikasi runaway - dalam kasus mod_php itu berarti bahwa itu adalah proses apache yang "melarikan diri", tetapi di bawah fastcgi itu hanya proses yang diajak bicara oleh apache, jadi seluruh server tidak harus diturunkan.

pjz
sumber
4

Keuntungan lain yang belum disebutkan adalah kenyataan bahwa dengan mod_fcgid(yang merupakan implementasi yang lebih baru untuk menggunakan FastCGI di Apache) dan suexec Anda dapat mewujudkan pengaturan di mana vhost yang berbeda menggunakan pengguna Linux yang berbeda untuk eksekusi, yang dapat menjadi manfaat keamanan nyata dalam szenario hosting bersama .

Dengan mod_php, semua vhosts berbagi pengguna yang sama, yaitu pengguna Apache. Ini dapat menyebabkan masalah keamanan.

Martin C.
sumber
Itu tergantung pada MPM yang digunakan dalam pengaturan Apache httpd khusus ini. Sebagai contoh dengan MPM-itk ( mpm-itk.sesse.net ) dimungkinkan untuk menggunakan mod_php dan membuat skrip (atau lebih baik: proses httpd) dijalankan dalam konteks pengguna lain.
joschi