gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:47:01 25 4
gpt4 key购买 nike

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

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

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

它是否执行多线程,即如果同时有多个 http 请求?还是一次处理一个请求?

是否有很好的文档讨论 php 作为 thttpd 模块的行为?

最佳答案

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

  • PHP 引擎是线程安全的,但一些扩展不是,所以通常人们会回避在多线程环境中使用它,而宁愿使用单进程 - 单请求方法
  • 是的,通常网络服务器模块(如 Apache mod_* 之类的东西)通过驻留来工作,但是 PHP 的最大速度障碍是它需要解析源文件(如果你使用 include/require,甚至是多个源文件)每个请求。您可以使用类似 APC 的方式来减少这种情况。缓存文件的解析版本
  • 还有一个名为 FastCGI 的协议(protocol),您可能想看看它 - 它基本上是模块和 CGI​​ 解决方案之间的交叉 - 它启动了几个进程,每个进程承载一个 CGI 问题实例(PHP在这种情况下)并使用它们来处理请求。实例被回收(即它们可以处理多个请求,一个接一个)。

关于PHP 作为 thttpd 模块与 CGI 在内存使用方面的对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com