PHP как модуль thttpd против CGI с точки зрения использования памяти

Я планирую использовать php во встроенной среде. Наш текущий веб-сервер - thttpd. Сейчас я рассматриваю два варианта: запускать его как cgi или как модуль SAPI. Я знаю, что cgi имеет преимущество с точки зрения безопасности. Но если мы собираемся использовать php как cgi, экземпляр php должен загружаться в память для каждого запроса.

Я попытался скомпилировать его как SAPI-модуль thttpd и заметил, что использование памяти thttpd, в частности rss, не увеличивается по мере увеличения количества запросов.

Кто-нибудь может объяснить, как thttpd загружает php? Загружается ли он только один раз и остается в памяти, пока работает thttpd? Если это так, мы можем рассматривать это как альтернативу cgi.

Выполняет ли он многопоточность, то есть если одновременно выполняется несколько HTTP-запросов? или он обрабатывает запросы по одному?

Есть ли хорошая документация, в которой обсуждается поведение php как модуля thttpd?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
2 510
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня нет опыта работы с thttpd, но вот несколько советов:

  • движок PHP является потокобезопасным, но некоторые расширения нет, поэтому обычно люди уклоняются от его использования в многопоточной среде и предпочитают использовать метод «один процесс - один запрос».
  • да, обычно модули веб-сервера (например, Apache mod_ *) работают, оставаясь резидентными, но большой удар по скорости для PHP заключается в том, что ему необходимо анализировать исходный файл (или даже несколько исходных файлов, если вы используете include / require) для каждого запроса. Вы можете сократить это, используя что-то вроде БТР, которое кэширует проанализированную версию файлов.
  • есть также протокол FastCGI, на который вы, возможно, захотите взглянуть - это, по сути, кроссовер между модулем и решением CGI - он запускает пару процессов, каждый из которых содержит один экземпляр проблемы CGI (в данном случае PHP ) и использует их для обработки запросов. Экземпляры повторно используются (т. Е. Они могут обрабатывать несколько запросов, один за другим).

Другие вопросы по теме