Переваги та недоліки 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, в свою чергу, має деяке збільшення швидкодії при великій (в тисячі з'єднань) навантаженні на сайт.