首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP作为thttpd模块与CGI在内存使用方面的比较

PHP作为thttpd模块与CGI在内存使用方面的比较
EN

Stack Overflow用户
提问于 2008-10-23 14:55:14
回答 1查看 2.5K关注 0票数 3

我计划在嵌入式环境中使用php。我们目前的web服务器是thttpd。我现在正在考虑两个选择:是否将其作为cgi或SAPI模块运行。我知道cgi在安全性方面有优势。但是如果我们要使用php作为cgi,那么应该为每个请求加载一个php实例到内存中。

我曾尝试将其编译为thttpd的SAPI模块,并且我观察到thttpd的内存使用量,特别是rss,不会随着请求数量的增加而增加。

有人能解释一下thttpd是如何加载php的吗?它是否只加载一次,并在thttpd运行期间一直驻留在内存中?如果是这样,我们可以考虑将其作为cgi的替代方案。

它是否执行多线程,例如,如果同时有多个http请求?或者它一次只处理一个请求?

有没有好的文档讨论php作为thttpd的一个模块的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-01-30 08:13:07

我没有使用thttpd的经验,但这里有一些建议:

  • PHP引擎是线程安全的,但一些扩展不是,所以人们通常避免在多线程环境中使用它,而是使用一个进程一个请求的方法
  • 是的,通常网络服务器模块(像Apache mod_*的东西)是通过驻留来工作的,但是PHP最大的速度障碍是它需要为每个请求解析源文件(甚至是多个源文件,如果你使用include /mod_*)。你可以通过使用像APC这样的东西来减少这一点,它可以缓存文件的解析版本
  • 还有一个叫做FastCGI的协议,你可能想看看-它基本上是模块和CGI解决方案之间的交叉点-它旋转了几个进程,每个进程托管CGI问题的一个实例(在本例中是PHP),并使用它们来处理请求。实例被回收(即它们可以一个接一个地处理多个请求)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/230054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档