使用 FastCGI 只能将 PHP 应用程序/框架加载到内存中一次吗?
-
06-09-2019 - |
题
我的印象是 FastCGI 允许您在网络应用程序中加载一次,然后您只需“提供”FastCGI 一些功能,例如 myHandleHTTPRequest($url)
, ,然后每当有请求时就会调用它。这样,当您的应用程序始终在内存中准备就绪时,您将获得更好的性能,对吗?
但我开始明白,事实并非如此。还是我错了?
在我看来,PHP 是由 FastCGI 加载的,好吧,这提供了一些改进,但是随后 我的 应用程序仍在根据每个请求重新加载。
我想加载我的应用程序(或读取“框架”)一次(然后每隔 500 个请求左右重新加载一次。)我可以这样做吗?
编辑:这个问题已被改写为: 自定义 PHP FastCGI 接口
解决方案
是的,你可以做到这一点,或多或少忘记所有的事情 精美的 PHP 集成内容 (这就是为您提供通用 PHP 解释器作为 FastCGI 的原因)并将您的应用程序编写为 FastCGI 服务器本身。
这是一个完全不同的话题,但你可能想研究一下 Perl 应用程序如何实现这一点 作为指导。
其他提示
fastcgi 的作用是避免为每个请求生成一个 php 解释器(就像 cgi 那样)。这节省了大量的处理时间,因为 php 解释器保存在内存中,或多或少像 mod_php 一样。
您可以采取以下措施来提高性能:
- 使用 APC, ,或 xcache 等,它透明地预编译每个 php 文件,避免对每个请求进行重新编译。
- 缓存。Apc 和其他人提供了存储变量的机制,其生命周期甚至可以跨越请求。这可用于在请求之间共享处理后的数据,并将应用程序数据保存在内存中。
不隶属于 StackOverflow