PHP5框架:自动加载和操作码缓存

PHP5框架:自动加载和操作码缓存,php,frameworks,autoload,opcode-cache,Php,Frameworks,Autoload,Opcode Cache,许多框架利用spl\u autoload\u register()动态加载类(即控制器和模型)。有几篇关于自动加载和操作码缓存的文章。有一篇帖子特别有@cletus的回复,其中提到@Rasmus发表了一些声明,这些声明被证明对那些利用APC作为操作码缓存的人来说是不好的: 对于不影响操作码缓存性能的自动加载的任何可能替代方案,似乎没有进行任何讨论 有没有办法绕过自动加载的类不会添加到字节码缓存的事实? 如果没有,是否有其他方法可用于动态加载将被缓存的类?关于这个主题似乎仍然存在困惑,但是在

许多框架利用
spl\u autoload\u register()
动态加载类(即控制器和模型)。有几篇关于自动加载和操作码缓存的文章。有一篇帖子特别有@cletus的回复,其中提到@Rasmus发表了一些声明,这些声明被证明对那些利用APC作为操作码缓存的人来说是不好的:

对于不影响操作码缓存性能的自动加载的任何可能替代方案,似乎没有进行任何讨论

有没有办法绕过自动加载的类不会添加到字节码缓存的事实?


如果没有,是否有其他方法可用于动态加载将被缓存的类?

关于这个主题似乎仍然存在困惑,但是在大多数情况下,它归结为易用性与性能

一个好的邮件列表线程应该是Zend Framework邮件列表上的:

现在,相关性在这里,因为如果您从尚未定义的 类,您可以依赖自动加载来定义它(尽管您也可以 依赖于包括),实际上自动装载设施的存在可能 鼓励你使用这种继承。但这不是自动加载 这就带来了麻烦(请看Ramus在 博客上有一些麻烦事的例子)。 所以正确的说法应该是“倾向于依靠自动加载的人倾向于 还要使用不受编译时绑定的代码”。这是看不见的 当然,自动加载是错误的,仅仅避免自动加载也不会有什么帮助 还有一点-您还必须重写代码,以便 编译时绑定可能发生。而且这与使用 例如,自动加载“new”

至于上述影响造成的减速,即没有 编译时绑定—代码确实变得有点慢,诸如此类 在某些不清楚的情况下,代码可能会给操作码缓存带来一些麻烦 (不是在自动加载的情况下,而是在定义了类的情况下) 内部条件,或者,上帝禁止,不同的定义被创建 但它几乎与使用无关 自动加载。 然而,经济放缓的程度似乎因经济衰退而大大加剧 人-这是什么(我重复要清楚-什么都没有)相比 由于缺少操作码缓存而带来的性能优势 磁盘操作和编译阶段。你可能 编写一个人工基准,显示一些重要的 减速,但我相信任何真正的应用程序都不会注意到

来源:


根据我对Mediawiki+APC的回忆,自动加载的类将被APC缓存。@jldupont-我刚刚更新引用了一个引起我兴趣的特定响应来写这篇文章。完全引用。