Какая разница в использовании PHP в качестве модуля Apache, CGI, FastCGI и командной строки?


Хотел бы знать, что разница между различных "версий" или "способы", чтобы использовать PHP, потому что имеет модуль Apache, CGI, FastCGI и командной строки. Итак, я хотел бы знать, если есть какая-то разница, или "правило" для чего мне нужно использовать и в какой ситуации.

Author: Wallace Maxters, 2016-06-04

1 answers

Примечание:, Не "версии", ни "пути"... являются режимы выполнения. Я постараюсь выделить основные различия между ними, преимущества и недостатки каждого из них. В конспекте совет, идеальные условия для каждого.

Apache Модуль mod_php)

С Помощью mod_php для запуска сценариев PHP на веб-сервере, является, без сомнения, самый популярный метод, и долгое время был режим запуска по умолчанию в реализации одного веб-сервера.

Использование mod_php интерпретатор PHP-это встроенный в каждого процесса Apache, созданный на сервере. Таким образом, каждый процесс Apache может обрабатывать и выполнять само по себе PHP скрипты избавляя от необходимости решения каких-либо внешних процессов, в отличие от того, что происходит с CGI или FastCGI.

Это становится особенно полезным в веб-сайты с высокой использую PHP, например, если мы используем WordPress, Drupal, Joomla, среди других, учитывая, что все заказы могут обрабатываться веб-сервером Apache.

Как интерпретатор запускается с Apache, это позволяет ему работать быстро, как только может кэшировать некоторые сведения без необходимости повторять задач каждый раз, когда скрипт запускается.

Большим недостатком этого режима является то, что каждый процесс Apache, становится все больше (потребляет больше памяти и ресурсов сервера). Несмотря на то, что Apache, на котором служат только статичного содержимого, как и в случае изображений, учитывая, что всегда содержит интерпретатор PHP, потребление памяти и ресурсов всегда высокий.

Преимущества

  • Код PHP работает на Apache;
  • Нет необходимости внешних процессов;
  • Отличную производительность веб-сайта/платформы с большим использованием PHP;
  • Параметры конфигурации PHP может быть настроен в пределах от политики .htaccess.

Недостатки

  • Делает каждый процесс Apache будет больше (больше объем ОПЕРАТИВНОЙ памяти, потребляемой);
  • Загружает интерпретатор PHP, даже если будете служить статический контент (изображения);
  • веб-сервер получает в качестве владельца файлов, созданных с помощью scripts PHP, а не пользователя системы (с изменения конфигурации дает, чтобы изменить).

CGI

Запуска сценариев PHP с CGI является оригинальный способ для запуска приложений на веб-сервере, очень неэффективно и редко. Введена в 1990 году была быстро признана неэффективной для использования во что-то другое, кроме очень небольших сайтов.

Преимущество режиме выполнения CGI является то, чтобы поддерживать выполнение кода отдельно от веб-сервера, что дает некоторые дополнительные преимущества для безопасности. Например, скрипт PHP, ошибок или сбоев безопасности не затрагивает каких-либо файлов за пределами домена, в котором находится (особенно выгодно для серверов веб-хостинг. Это также означает, что интерпретатор PHP вызывается, только когда это необходимо, позволяя, таким образом, что статический контент подают исключительно веб-сервером.

Большая неэффективность режиме CGI, является тот факт, что даже если открыть новый процесс, когда необходимо выполнять PHP-код. На веб-сайтах/платформах, которые делают большое использование PHP, он быстро серверных ресурсов, потребляемых.

Преимущества

  • Лучше безопасности mod_php учитывая, что выполнение кода PHP изолирована от веб-сервера.

Недостатки

  • снижению производительности.

FastCGI

FastCGI был представлен как среднее между тем, что модуль Apache или CGI-приложение. Он позволяет программам запускаться, интерпретатор, от веб-сервера, в том числе пособий в CGI режиме без каких-либо его неэффективности.

При запуске scripts PHP с FastCGI каждый запрос передается с веб-сервера FastCGI через слой общения. Это обеспечивает большую масштабируемость, учитывая, что веб-сервер и интерпретатор PHP могут быть разделены за свои собственные сред-сервера. Тем не менее, аналогичный результат может быть получен с помощью nginx перед Apache.

FastCGI он также имеет преимущество быть запущен как пользователь системы, что делает, как, что же всегда будьте владельцем всех, и все файлы, созданные во время выполнения scripts PHP.

Недостатком запустить PHP с поддержкой FastCGI является то, что директивы PHP, определенные в файле .htaccess, которые не уважают. Кроме того, можно настроить политики PHP в файл php.ini.

Преимущества

  • Большей безопасности, учитывая выполнение PHP-кода в изолированной среде веб-сервера;
  • статического контента не обрабатывается интерпретатором PHP;
  • Позволяет файлы управляются пользователей системы без изменения разрешения.

Недостатки

  • нельзя использовать политики PHP в файл .htaccess.

PHP-FPM (FastCGI Process Manager)

Альтернативную PHP-FastCGI с некоторыми дополнительными функциями, полезными для веб-сайтов, любого размера, особенно для более тяжелый.

Преимущества

  • Рост процессов адаптивно;
  • базовой Статистики (вроде mod_status, Apache);
  • расширенные возможности Управления процессами с начала/остановки изящные;
  • Возможность начать работников с различными uid, gid, chroot, окружающей среды и php.ini (заменяет safe_mode)
  • Создает журналы в stdout и stderr;
  • Перезагрузки чрезвычайной ситуации, в случае случайного уничтожения код (кэша);
  • Поддержка ускоренной загрузки;
  • Несколько улучшений для вашего аспект FastCGI.

Недостатки

  • 2011 был в демо-версии, в настоящее время их недостатком является маленький использования (несколько реализаций лицу остальные режимы PHP).

CLI (командной строки)

В Этом режиме выполнения очень подобно CGI, в результате чего следующие преимущества по сравнению с аналогичным:

  • ", по умолчанию, не пишет заголовки output;
  • Некоторые политики php.ini перезаписываются через CLI, потому что нет смысла в среде shell:
    • html_errors: по умолчанию в CLI FALSE
    • implicit_flush: по умолчанию в CLI TRUE
    • max_execution_time: по умолчанию в CLI-0 (без ограничений)
    • register_argc_argv: по умолчанию в CLI TRUE
  • Позволяет передавать аргументы строка для сценария;
  • Имеем доступ к 3 константы, определенные для среды shell: STDIN, STDOUT, STDERR;
  • Не изменяет правление нынешнего правления сценария выполнено. Это означает, что правление нынешнего, где мы набираем команду для запуска сценария.

, по Существу, является способ запустить scripts PHP для выполнения задач на сервере, либо с файлами, обработка данных, техническое обслуживание, базы данных и/или другие вещи больше времени, или тяжелые, что не могут работать через SAPI.


Аннотация

, "конспект", " для каждого режима работы становится выгодным для конкретной ситуации, как мы можем наблюдать в следующей таблице:

┌───────────────────────────────────┬──────────────────────────────┐
│ Apache Module (mod_php)           │ Alto desempenho em           │
│                                   │ web-sites simples            │
├───────────────────────────────────┼──────────────────────────────┤
│ CGI                               │ ...não utilizar...           │
│                                   │                              │
├───────────────────────────────────┼──────────────────────────────┤
│ FastCGI                           │ Ideal para qualquer tipo     │
│                                   │ web-sites/aplicações         │
├───────────────────────────────────┼──────────────────────────────┤
│ PHP-FPM (FastCGI Process Manager) │ Supostamente +vantajoso que  │
│                                   │ o FastCGI para qualquer tipo │
│                                   │ de web-sites/aplicações!     │
├───────────────────────────────────┼──────────────────────────────┤
│ CLI (linhas de comandos)          │ Para scripts que realizam    │
│                                   │ tarefas no servidor          │
└───────────────────────────────────┴──────────────────────────────┘
 40
Author: Zuul, 2020-06-11 14:45:34