PHP包含和内存

时间:2011-07-24 03:17:36

标签: php memory-management

我希望这不是一个完全愚蠢的问题。我已经搜索了很多答案,但我无法找到(或认出)一个完全正确的点。

我知道PHP中的函数在实际运行之前不会被解析。因此,如果我有一个包含许多函数的大类,其中只有一个需要一个大的包含文件,如果我只在函数中包含“包含文件”(而不是在类文件的顶部),我是否可能节省内存)?

我认为,即使这会节省内存,它只会在调用函数之前这样做,之后在当前脚本停止运行之前内存不会被释放?

非常感谢,

Rob

3 个答案:

答案 0 :(得分:2)

我喜欢这句话:“让它发挥作用然后,如果需要的话,让它快速。” - 一些优秀的程序员?

在大多数情况下,您可能会更好地专注于良好的OOP结构和应用程序设计,然后加快速度。如果你的服务器正在使用像Zend Optimizer这样的东西,你所有的方法都放在一个文件中就不会有任何区别,因为它都是预编译的并存储在内存中。(这比较复杂但是你明白了)

您还可以在apache启动时加载所有包含文件。然后所有函数都加载到内存中。除非您希望每次进行代码更改时重新启动Apache,否则在开发时不希望这样做。但是当在生产服务器上完成时,它可以产生巨大的差异。如果你真的想要快速创建,你可以用C ++编写代码并将其作为Apache的模块加载。

但最终......你真的需要那种速度吗?

答案 1 :(得分:1)

是的,但请确保该功能不依赖于父级中包含的任何其他功能。内存消耗还取决于几个方面,从文件本身的大小到它需要的变量设置和适当的垃圾收集协议所需的虚拟内存量。

如果函数在一个类中,它被称为一个方法,它可能依赖于它的类来扩展另一个类。

只需要考虑一些事情。始终包括最低限度。

答案 2 :(得分:0)

除非您真的需要,否则不要在这种情况下保存内存,节省开发时间。记忆通常很便宜,但开发/支持时间不是。使用像eAcceleratorAPC这样的php opcode cacher,它会提高执行速度,因为所有文件都会被预编译并存储在内存中。