PHP: Які переваги FastCGI над mod_php?


30

Нещодавно мені запропонували використовувати FastCGI з PHP. Тепер я перейшов на сторінку FastCGI і прочитав її, але я не дуже розумію, в чому переваги.

Відповіді:


37

Використовуючи mod_php, кожен працівник Apache завантажує в нього весь інтерпретатор PHP. Оскільки Apache потребує одного робочого процесу за кожен вхідний запит, ви можете швидко отримати сотні працюючих Apache, кожен з яких завантажений власним PHP-перекладачем, витрачаючи величезні обсяги пам'яті.

(Зверніть увагу, це не зовсім так. Apache worker_mpmдозволяє обслуговувати безліч запитів з одним потоковим працівником Apache. Однак, навіть у 2009 році це не рекомендований спосіб розгортання PHP через підозру на проблеми з нарізкою розширень PHP.)

Використання PHP в режимі fast_cgi (використання чогось типу spawn-fcgi з пакету lighttpd) має такі переваги

  • налаштуйте кількість працівників PHP окремо від кількості вхідних з'єднань
  • дозволяють розміщувати вас PHP-працівники на іншому сервері або масштабувати на багатьох серверах, не змінюючи веб-рівень
  • дає вам можливість вибрати інший веб-сервер, наприклад, nginx або lighttpd
  • дозволяють запускати програму PHP в іншому домені безпеки на веб-сервері

5

FastCGI означає, що біти php не виконуються в тому ж процесі, що й біти apache, на відміну від mod_php. Цей поділ може мати певні переваги, коли мова заходить про перезапуск сервера або розправу із запущеними програмами - у випадку mod_php це означає, що це "утікаючий" апарат апаша, але в fastcgi це просто процес, з яким розмовляє апаш, весь сервер не потрібно знімати.


4

Ще одна перевага, про яку ще не було сказано, - це той факт, що за допомогою mod_fcgid(що є новою реалізацією для використання FastCGI на Apache) та suexec ви можете реалізувати установки, коли різні vhosts використовують різні користувачі Linux для виконання, що може бути справжньою перевагою безпеки для спільного хостингу szenario .

З mod_php усі vhosts діляться на одного користувача, який є користувачем Apache. Це може призвести до проблем безпеки.


Це залежить від MPM, який використовується в цій конкретній установці Apache httpd. Наприклад, з MPM-itk ( mpm-itk.sesse.net ) можна використовувати mod_php і сценарії (або краще: процеси httpd) виконуються в контексті іншого користувача.
joschi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.