真的要加速 PHP 吗?

问题描述 投票:0回答:6

我已经编写 PHP 多年了,并且使用过世界上的每一个框架,但是有一件事一直困扰着我......那就是每次有人告诉我的服务器他们想要的时候,整个该死的事情都必须被解释和执行页面已送达。

我尝试过缓存、FastCGI、Zend Job Queue(以及具有类似功能的 symfony 插件 - 以及我自己的基于数据库的解决方案,它们实现 System_Daemon 类来运行后台进程),并且我成功地使我的应用程序使用所有这些东西相当快...但我无法克服我的设置文件、系统/环境检查功能以及所有应该只加载一次的东西的心理障碍...每次都加载有人访问我的页面。

所以,我的闲聊引出了以下问题——

是否有一些方法/技术可以将 PHP 的某些方面加载到 RAM 中,以便在请求该页面时,我所有的 settings.yml 文件、系统检查、框架文件、缓存页面等都可以直接从内存加载,甚至不需要触及HD...或者需要每天通过相同的加载机制 50,000 次来初始化程序?

如果 PHP 中没有任何内容...是否有任何其他“网络”语言可以以这种方式编译,以允许真正的一次性应用程序?

php symfony1 daemon
6个回答
9
投票

如果您正在谈论缓存数据,我认为您应该尝试一下 memcached。我认为如果你在 apache 中使用像 mod_php 这样的东西(它不会在请求之间消失),PHP 在缓存编译的 php 页面方面相当熟练。


8
投票

看看APC(替代 PHP 缓存),它保留已编译文件(PHP 操作码)的缓存,还允许您使用 apc_fetch、apc_store 在内存上存储随机变量。

安装非常简单,而且确实提升了性能。


2
投票

在 RAM 磁盘上创建一个完整的页面缓存,并使您的 Web 服务器从那里提供页面服务。这是 WordPress 超级缓存插件使用的一种方法,如果您的网站适合全页缓存,那么它会非常有效。这就是为什么你甚至没有调用 PHP 解释器。

对于已登录的用户(具有打开的会话),您可以创建一个重写条件,将其请求重定向到 PHP 引擎。

此外,始终使用像 APC 这样的操作码缓存,并将其用于缓存配置文件(memcache 也可以)。


1
投票

如果您需要一个类似 JVM/Tomcat 的应用服务器,那么答案可能是否定的。据我所知,PHP 不存在这样的(可用的)。 PHP 使用无共享架构,因此它的设计是根据所有请求设置所有内容。但实际上,这使得 PHP 可以很好地扩展。

至于加速您的应用程序,请尝试使用 memcached代码加速器。也许查看 Zend Server 以获得完整的包。


0
投票

关于你的最后一个问题,我相信至少大多数Python和Ruby Web框架都是这样工作的。

现在构建的 Ruby Web 应用程序使得每个服务器进程仅初始化一次应用程序。当请求到来时,服务器(例如 Apache)将它们传递到在后台运行的 Web 应用程序(通过 Rack 接口)。

这就是基于 Rack 的 Web 框架的工作原理。旧版本的 Ruby on Rails 很相似,尽管它们使用不同的接口与 Web 服务器通信。


0
投票

我会关注 Facebook 工程页面 (http://www.facebook.com/notes.php?id=9445547199),他们时不时地会发布一些关于如何保持快速的帖子/优化/规模。我认为他们对 php 的使用非常令人印象深刻。

© www.soinside.com 2019 - 2024. All rights reserved.