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


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

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

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

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

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

Author: green_t, 2008-10-23

1 answers

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

  • движок PHP потокобезопасен, но некоторые расширения не являются таковыми, поэтому обычно люди избегают его использования в многопоточной среде и предпочитают использовать метод "один процесс - один запрос"
  • да, обычно модули веб-сервера (например, Apache mod_*) работают, оставаясь резидентными, но большой скачок скорости для PHP заключается в том, что ему необходимо проанализировать исходный файл (или даже несколько исходных файлов, если вы используете include /требуется) для каждого запроса. Вы можете сократить это, используя что-то вроде APC, который кэширует проанализированную версию файлов
  • существует также протокол FastCGI, на который вы, возможно, захотите взглянуть - он в основном представляет собой переход между модулем и решением CGI - он запускает пару процессов, каждый процесс содержит один экземпляр проблемы CGI (в данном случае PHP) и использует их для обработки запросов. Экземпляры перерабатываются (т. е. они могут обрабатывать несколько запросов, один за другим).
 1
Author: Grey Panther, 2009-01-30 08:13:07