4

我基于 Zend Framework 和 Doctrine 的应用程序在每个请求中包含 > 300 个文件。它们大多是相同的文件。

这是一个相当大的开销。通过(和 Memcache)部分解决Zend_Cache,但并非所有页面都可以缓存。

  • 如何减少这个数字?如何加快速度?

Doctrine 可以选择编译所需的文件,这对于生产服务器和应用程序的最终版本来说似乎很合理。

我的计划也是编译其他库(我已经剥离了所有require_once的)。

  • 这个任务有什么工具吗?也许一些缓存驱动程序会自动执行?如何设置它们?
4

2 回答 2

2

php 文件包含的开销通常可以通过操作码缓存来抵消,例如APC,一个可通过 pecl 获得的扩展。操作码缓存通常通过缓存已编译的字节码来工作,以便读取和解析源代码的开销仅在第一个请求时产生。这将大大否定对您的 php 文件进行任何源代码编译的需要或好处。

于 2010-08-15T19:56:17.757 回答
1

最好的选择是使用 APC 或 Zend_Accelerator。但是您仍然可以制作这些将类合并到一个文件中的“编译”脚本。这将所需的 IO 降至最低。不幸的是,您还需要重写自动加载过程,以便它查看适当的文件。您通常可以将常用类压缩在一起(Zend_Form + Elements + Decorators、常用验证器、Request + Response + Router + Controller、Zend_Db + adapters + Zend_Db_Select 等)。主要是总是在每个请求上使用的类可以很容易地压缩并手动包含在一个文件中。最好的方法是添加调试调用,将所有包含的文件(http://www.php.net/get_included_files)保存到数据库中,然后:

SELECT * FROM files GROUP BY filename WHERE COUNT(filename) = $numOfRequests

结果中的所有文件都可以安全地合并到一个文件中,并在引导之前包含:)

于 2010-08-15T21:05:25.473 回答