PHP как модуль thttpd против CGI с точки зрения использования памяти - PullRequest
3 голосов
/ 23 октября 2008

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

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

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

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

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

1 Ответ

1 голос
/ 30 января 2009

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

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