Інтерпретатор PHP може працювати у декількох режимах. У цій статті розглядаються такі режими роботи: 1) PHP як модуль Apache; 2) CGI; 3) SuPHP; 4) FastCGI; 5) LSPHP.

Кожен із зазначених режимів має свої переваги та недоліки. Які саме — розберемо у статті.

Зміст

  1. PHP як модуль Apache (mod_php)
  2. PHP у режимі CGI
  3. SuPHP
  4. PHP у режимі FastCGI (mod_fastcgi)
  5. LSPHP
  6. Як дізнатися поточний режим PHP

PHP як модуль Apache (mod_php)

Цей режим передбачає підключення модуля mod_php у налаштуваннях веб-сервера Apache. У цьому випадку кожен процес веб-сервера буде включати в себе цей модуль. Такий режим особливо підходить для невеликих сайтів з малою відвідуваністю.

Переваги:

  • Доступні параметри кешування, за рахунок чого можна збільшити продуктивність.
  • Швидке виконання скриптів.

Недоліки:

  • Змінювати конфігурацію можна тільки через основний файл php.ini, але деякі параметри можна оголосити через файл .htaccess.
  • За замовчуванням скрипти запускаються з правами користувача apache. Однак це можна змінити шляхом використання mod_ruid, який дозволяє запускати скрипти від різних користувачів.
  • Завантаження модуля відбувається в усіх процесах apache навіть за відсутності запитів до типу скрипта, який обробляє цей модуль. За рахунок цього створюється зайве навантаження на сервер.
  • Скрипт, який має помилки, може привести до збою в роботі веб-сервера.
  • Немає простого способу дізнатися, хто з користувачів запустив сторонній додаток.
  • Деякі модулі можуть погано працювати з багатопотоковим запуском веб-сервера (MPM Worker).

PHP у режимі CGI

У цьому режимі запускається інтерпретатор php-cgi для всіх скриптів, для яких CGI встановлений як обробник. Якщо велика частина сайту складається зі статичного вмісту, CGI буде хорошим вибором, тому що буде забезпечено економічне використання оперативної пам’яті за рахунок того, що інтерпретатор буде викликатися в разі потреби. Але і в той самий час такий метод уповільнює виконання, тому що при кожному запиті знадобиться завантаження інтерпретатора в пам’ять.

Переваги:

  • Оброблювач CGI може бути запущений з правами будь-якого користувача системи (за допомогою suexec).
  • Конфігурацію PHP можна зробити індивідуальної для кожного користувача.
  • CGI використовує оперативну пам’ять тільки якщо це дійсно необхідно.
  • Завдяки тому, що PHP інтерпретатор працює як незалежний процес, ймовірність збою роботи Apache через помилки в скриптах практично нульова.
  • Кожен клієнт може вибрати індивідуальну версію PHP.

Недоліки:

  • Невисока продуктивність.
  • Розробка PHP-авторизації з командою Header має обмеження у зв’язку з тим, що скрипт буде отримувати не всі необхідні серверні змінні.

SuPHP

SuPHP є окремим випадком CGI, в якому кожен скрипт може виконуватися з привілеями різних користувачів.

Переваги:

  • Можна відстежити, від імені якого користувача запускався скрипт.
  • Користувач не зможе запустити скрипти, якщо він не є їх власником.
  • Для всіх файлів, які будуть завантажені на сервер через сайт, буде встановлений власником той користувач, від імені якого ці файли завантажувалися.

Недоліки:

  • Порівняно з CGI більш високе навантаження на CPU.
  • Недоступні функції кешування, наприклад, XCache, APC та ін.

PHP в режимі FastCGI (mod_fastcgi)

За своїми властивостями FastCGI є золотою серединою між режимами mod_php та CGI. У ньому немає недоліків CGI та є його переваги. При увімкненому FastCGI в оперативній пам’яті сервера розташовується постійно запущений процес-обробник. Це позбавляє від необхідності при кожному запиті запускати новий процес, як у випадку використання CGI. За швидкістю роботи FastCGI схожий на mod_php.

FastCGI комбінує в собі переваги всіх наведених вище режимів. У цьому випадку php-обробник запускається на постійній основі, і тепер для кожного запиту не потрібно створювати новий процес, що було властиво режиму CGI. FastCGI особливо підходить для високонавантажених сайтів, навантаження на які є постійним.

Переваги:

  • Можна поліпшити продуктивність за допомогою кешування.
  • Скрипти запускаються від імені їх власника.
  • Ризик зависання нижче за рахунок змінної, що визначає кількість запитів, які можна обслужити до планового перезавантаження інтерпретатора.

Недоліки:

  • Постійно запущений процес інтерпретатора створює навантаження на оперативну пам’ять, хоча її обсяг менше, ніж при використанні PHP як модуля Apache. Це досягається за рахунок відсутності необхідності звертатися до інтерпретатора PHP при видачі статичного вмісту.

LSPHP

LiteSpeed PHP (LSPHP) — реалізований у вигляді модуля mod_lsapi на веб-сервері Apache і є найбільш продуктивним варіантом запуску PHP на серверах під керуванням сPanel.

Переваги:

  • Збільшення швидкості обробки PHP-скриптів, що прискорює роботу всього сайту.
  • Відсутність помилки 500 при наявності php_flag і подібних директив у .htaccess. Актуально при переїзді з хостингу, який за замовчуванням працював з mod_php.
  • Менше споживання ресурсів у вашому віртуальному контейнері.
  • Покращена ефективність роботи Opcode Cache.

Недоліки:

  • На даний момент недоліків не було виявлено.

Більш детальну інформацію про роботу LSPHP можна прочитати у нашому блогу в статті «Пришвидшіть роботу свого сайту, перейшовши на LSPHP».

Для того щоб перейти на LSPHP, можна скористатися інструкцією з нашої бази знать.

Як дізнатися поточний режим PHP

Спосіб 1. За допомогою функції phpinfo ()

Створіть на хостингу php-файл c довільним ім’ям (наприклад, info.php), після чого відкрийте його для редагування і додайте в нього такі рядки:

<?php
phpinfo();
  • Збережіть внесені зміни, після чого відкрийте файл у браузері.
  • Якщо все було зроблено вірно, у браузері відобразиться сторінка з розгорнутою інформацією про встановлений PHP. У переліку виведених параметрів буде присутній параметр Server API, в значенні якого і відображається поточний режим PHP.
  • На зображенні нижче наведений приклад значення параметра Server API у разі використання режиму FastCGI.
Значення параметра Server API

Спосіб 2. За допомогою функції функції php_sapi_name ()

За аналогією з першим способом, створіть на хостингу файл, наприклад, info.php, потім відкрийте його для редагування і додайте туди такий код:

<?php $sapi = php_sapi_name(); echo $sapi;

Після збереження змін відкрийте файл у браузері. У результаті повинна відобразитися сторінка, у тілі якої буде виведено назву поточного режиму PHP. На зображенні нижче наведено приклад виведення при використанні режиму FastCGI.

Приклад виведення при використанні режиму FastCGI

Вже знаєте, яке доменне ім’я хочете отримати для вашого сайту? У нас ви можете купити домен дешево. Потрібен хостинг? HOSTiQ пропонує цікаві плани віртуального хостингу, а також ви зможете замовити VPS-сервер або орендувати сервер в Європі або США.