Php fastcgi і mod_php - комтет

Переваги та недоліки PHP FastCGI і mod_php

Основні відмінності між збірками.

  • mod_php:
    в .htaccess працюватимуть директиви php_value, дозволені (точніше необхідні) права 777 (що вкрай небезпечно), папки і файли створюються не від імені користувача, а від імені apache (в цьому полягає один з недоліків: видалити такі файли і папки без допомоги адміністраторів ви просто не зможете). При такому варіанті буде працювати 95% wap скриптів без попередньої настройки.
  • PHP FastCGI:
    в .htaccess заборонені директиви php_value (з'явиться помилка 500), права 777 неприпустимі (всупереч помилкам, варто відзначити, що для запису в папку більш ніж достатньо прав 755, а файлів 644, або в крайньому випадку, 666), файли і папки, а також виконання скриптів походить від імені користувача. При даній збірці безкоштовні скрипти без попередньої настройки працювати відмовляться (з'явиться помилка 500).
  • mod_php:
    запускається веб-сервером при кожному новому запиті. На запуск програми йде іноді значна частина часу, найчастіше запуск займає більше часу, ніж виконувана їм далі корисна робота. Також можна відзначити, що помилки в скриптах можуть привести до непрацездатності всього web-сервера.
  • PHP FastCGI:
    може бути реалізовано у вигляді демона, тобто воно саме може бути сервером. FastCGI-додаток запущено завжди, тому час на запуск не витрачається, йому досить лише виконувати корисну роботу. Помилки в скриптах не призводять до неработаспособності всього сервера.

Важливо зауважити, що при 300-500 з'єднань відчутної різниці для навантаження на сервер не буде, будь то fcgi або mod_php. Але при значенні 1000 з'єднань значно переважатиме FastCGI.

Підіб'ємо результати порівняння php FastCGI і php модуль Apache (mod_php), виділивши з усього вище сказаного переваги і недоліки:

PHP, як модуль Apache

В даному випадку для роботи PHP використовується модуль веб-сервера apache mod_php.

  • Найвища швидкість роботи сценаріїв, в порівнянні з іншими методами (на великих кількостях запитів).
  • Простота роботи, сервер сам обробляє скрипти.
  • Загальний конфігураційний файл для всіх скриптів (php.ini).
  • Можливість завдання змінних конфігурації PHP в конфігураційному файлі web-сервера або засобами файлу .htaccess

При цьому використовується модуль Apache mod_fastcgi, скрипти передаються його засобами на вхід інтерпретатора PHP.

  • Всі скрипти виконуються з правами користувача - власника www-домена.
  • Можливість індивідуальної настройки PHP для кожного користувача.
  • Менша витрата оперативної пам'яті в порівнянні з модулем apache.
  • Помилки в скриптах не призводять до падіння веб-сервера на відміну від режиму PHP як модуль apache.
  • За рахунок кешування деяких проміжних даних скрипт не тлумачиться кожен раз при виконанні і досягається більш висока швидкість в порівнянні з PHP як CGI.
  • Зайвий процес користувача (php-cgi) знаходиться в пам'яті після першого звернення до процесу.

Таким чином, використання FastCGI є більш безпечним, як з точки зору прав доступу, так і з точки зору наявності помилок в роботі сторонніх скриптів, і більш економічним і швидким способом роботи PHP-скриптів. mod_php, в свою чергу, має деяке збільшення швидкодії при великій (в тисячі з'єднань) навантаженні на сайт.

Схожі статті