PHP:200文件包含的内容对网站来说太多了吗?

PHP:200文件包含的内容对网站来说太多了吗?,php,parsing,include,server-side-includes,Php,Parsing,Include,Server Side Includes,我这里有一个定制的CMS(基于MVC并由其他人制作),它包含了大量的200个文件(源代码总大小为896kb,峰值使用量为7MB) 内存使用是可以的,但如果你问我,它是相当大的文件量 例如,我的框架最多只包含20个文件(类)来生成一个页面 我的问题是: 当大量用户访问站点时,这会影响性能吗?有压力吗 我已经用这个小的关闭脚本(放在index.php之上)对它进行了测试: ***自己的框架-独立的CMS-在办公室测试(启用APC) ***自己的框架-分离式CMS(禁用APC) ***Wordpres

我这里有一个定制的CMS(基于MVC并由其他人制作),它包含了大量的200个文件(源代码总大小为896kb,峰值使用量为7MB)

内存使用是可以的,但如果你问我,它是相当大的文件量

例如,我的框架最多只包含20个文件(类)来生成一个页面

我的问题是: 当大量用户访问站点时,这会影响性能吗?有压力吗

我已经用这个小的关闭脚本(放在index.php之上)对它进行了测试:

***自己的框架-独立的CMS-在办公室测试(启用APC)

***自己的框架-分离式CMS(禁用APC)

***Wordpress-默认主题-未激活插件(启用APC)

***Wordpress管理员-未激活插件(已启用APC)

***Wordpress-默认主题-未激活插件(禁用APC)

***Wordpress管理员-未激活插件(APC已禁用)

——继续--

更新2-在办公室

**MVC CMS-首次运行*

***MVC CMS-第二次测试

Files    : 199 files in 82 unique directories
TotalSize: 1Mb - 1241778 Bytes 

Functions: 1708 (internal)
Functions: 1 (user) + 1708 (internal) = 1709
Classes  : 295

Runtime  : 1.31 MT
Real used memory: 5Mb - 5242880 Bytes
Real peak memory: 5Mb - 5242880 Bytes
****测试结束**

MVC CMS:一些第一印象:

  • 很多(小)文件199
  • 很多目录
  • 慢速第一次运行
  • 第一次运行时占用大量内存
  • 减少全局函数(这还不错)

那么什么可能是瓶颈,文件或目录或其他什么呢?

当然是,每个
都包括一次
需要一次
对服务器有时间、内存使用和i/o影响。像Symfony这样的框架通过将类组合到几个文件中来降低包含量

您可以使用xhprof来查看includes会浪费多少时间。要查看对服务器的影响,请尝试运行ApacheAb并使用诸如htop之类的工具监视服务器

[编辑]


快速调整-对PHP<5.4使用APC或对5.4及更高版本使用Opcache。

文件是在需要时自动加载的,还是每个请求都包含所有200个文件?听起来很多,但更重要的是,您是否存在性能问题?如果你想扩大你的用户群,那么在相同硬件上负载增加30%的情况下,你的站点表现如何?如果您的CPU没有压力,并且您的磁盘不是瓶颈,那么不要担心。记住,过早的优化是万恶之源.1)文件是自动加载的(涉及Kohana框架),但由于设计需要这些文件,因此每次都会加载这些文件;-)。2) 这些自制的CMS针对不同的客户端以不同的配置在本地运行,是的,存在一些性能问题,因此我们想找出导致问题的原因。我已经发现200个文件是疯狂的。注意:没有CMS的200个文件,只有索引页(HTML输出)。第一次和第二次运行的差异太大,所以文件可能不是这样。上次我看到其中一个,它是由从外部源加载大量数据并将其缓存在文件中引起的。我会重新检查xhprof分析,图表会显示确切的瓶颈。啊,谢谢!我会看一看这个(我已经知道APC并使用它了)。就Symfony而言,每个类都有自己的PSR-1文件。大多数其他框架也是如此。不知道你是从哪里想到大多数框架合并类来限制包含的文件量的。是的,关于PSR-1你是对的,但是当执行这些类时,在Symfony案例中,请参见-app\cache\dev\classes.phpIn添加实际实现,你会发现在整个框架中有大量的“addClassesToCompile()”用法
Files    : 30 files in 7 unique directories
TotalSize: 1Mb - 1107807 Bytes 

Functions: 1535 (internal)
Functions: 522 (user) + 1535 (internal) = 2057
Classes  : 167

Runtime  : 0.26 MT
Real used memory: 4Mb - 4456448 Bytes
Real peak memory: 5Mb - 4718592 Bytes
Files    : 28 files in 7 unique directories
TotalSize: 1Mb - 1080506 Bytes 

Functions: 1708 (internal)
Functions: 520 (user) + 1708 (internal) = 2228
Classes  : 177

Runtime  : 0,48 MT
Real used memory: 7Mb - 6815744 Bytes
Real peak memory: 7Mb - 6815744 Bytes
Files    : 30 files in 7 unique directories
TotalSize: 1Mb - 1107807 Bytes 

Functions: 1516 (internal)
Functions: 522 (user) + 1516 (internal) = 2038
Classes  : 166

Runtime  : 0.33 MT
Real used memory: 9Mb - 9699328 Bytes
Real peak memory: 9Mb - 9699328 Bytes
Files    : 83 files in 6 unique directories
TotalSize: 3Mb - 2713670 Bytes 

Functions: 1535 (internal)
Functions: 2092 (user) + 1535 (internal) = 3627
Classes  : 200

Runtime  : 1.26 MT
Real used memory: 10Mb - 10485760 Bytes
Real peak memory: 10Mb - 10485760 Bytes
Files    : 105 files in 8 unique directories
TotalSize: 3Mb - 3341902 Bytes 

Functions: 1535 (internal)
Functions: 2464 (user) + 1535 (internal) = 3999
Classes  : 207

Runtime  : 1.17 MT
Real used memory: 7Mb - 7077888 Bytes
Real peak memory: 7Mb - 7340032 Bytes
Files    : 83 files in 6 unique directories
TotalSize: 3Mb - 2713674 Bytes 

Functions: 1516 (internal)
Functions: 2092 (user) + 1516 (internal) = 3608
Classes  : 199

Runtime  : 1.22 MT
Real used memory: 12Mb - 12845056 Bytes
Real peak memory: 12Mb - 12845056 Bytes
Files    : 105 files in 8 unique directories
TotalSize: 3Mb - 3341902 Bytes 

Functions: 1516 (internal)
Functions: 2464 (user) + 1516 (internal) = 3980
Classes  : 206

Runtime  : 1.3 MT
Real used memory: 16Mb - 16777216 Bytes
Real peak memory: 16Mb - 17039360 Bytes
Files    : 199 files in 82 unique directories
TotalSize: 1Mb - 1241778 Bytes 

Functions: 1708 (internal)
Functions: 1 (user) + 1708 (internal) = 1709
Classes  : 295

Runtime  : 12.55 MT
Real used memory: 6Mb - 6029312 Bytes
Real peak memory: 6Mb - 6029312 Bytes
Files    : 199 files in 82 unique directories
TotalSize: 1Mb - 1241778 Bytes 

Functions: 1708 (internal)
Functions: 1 (user) + 1708 (internal) = 1709
Classes  : 295

Runtime  : 1.31 MT
Real used memory: 5Mb - 5242880 Bytes
Real peak memory: 5Mb - 5242880 Bytes