在优化网站的内存时,我注意到内存消耗的飞跃,同时包含大量用于特定目的的 PHP 类文件(600+)。分开来看,我注意到包含一个 PHP 文件(因此可能编译为操作码)占用的内存大约是磁盘上文件大小的 50 倍。
在我的例子中,磁盘上的文件总共有大约800 kB大小(带有缩进和注释,纯类声明,字符串不多),但是在包含所有文件后,内存消耗大约高出40 MB。
我这样测量(PHP 5.3.6):
echo memory_get_usage(), "<br>\n";
include($file);
echo memory_get_usage(), "<br>\n";
在 600 个文件的循环中,我可以看到内存消耗从基本上为零增长到 40 MB。(没有自动加载器加载额外的类,或者任何立即执行的全局代码或构造函数代码,它实际上只是纯粹的包含。)
这是正常行为吗?我假设操作码比纯源代码更紧凑(去掉所有空格和注释,或者只有一两个指令字节而不是“foreach”字符串等)?
如果这是正常的,有没有办法优化它?(我假设使用操作码缓存只会节省我的编译时间,而不是实际的内存消耗?)