包括PHP文件对性能有多大影响?

问题描述

| 问题几乎说明了一切,我正在一个大型项目中,大多数对PHP
include()
调用在100到150个文件之间。 PHP平均花费的时间在150到300毫秒之间。我想知道其中有多少是由于包含PHP脚本引起的?我一直在考虑运行一个脚本,该脚本检查最常访问的文件是否有特定的调用,并将它们合并到一个文件中以加快处理速度,但是对于我来说,这样做的影响为零。 我应该注意,我使用的是APC,但我并不完全了解APC在后台执行的操作,但是我想它可能已经以某种方式缓存了我的文件,因此文件数量并没有太大的不同吗? 将不胜感激关于这个问题的任何投入。 当然,300毫秒并不多,但是如果我可以说100甚至50毫秒,那将是一个很大的提升。 编辑: 为了澄清,我正在谈论通过PHP include / require加载文件。     

解决方法

        文件加载是一件棘手的事情。就像其他人所说的,唯一可以肯定的方法就是做一些基准测试。但是,以下是一些常规规则,仅适用于PHP加载,不适用于fopen文件: APC会将其操作码缓存存储在共享内存中,因此您将在第一次加载时受到打击,但不会对后续加载造成影响。
include
include_once
(以及它们的
require
表亲)实际上很重。以下是一些提高速度的提示: 使用文件的绝对路径(避免使用
../foo.php
等相对路径) 这两个
_once
函数都需要检查以确保不通过符号链接也未包含该文件,因为符号链接可以产生指向同一文件的多个路径。这非常昂贵。 (请参阅下一点) 仅加载所需的文件比调用ѭ1便宜得多。利用自动加载器仅在需要时加载类。 本地磁盘几乎总是比网络存储更好的选择。如果有多个服务器,请尽可能在每台服务器上保留源代码的副本。这意味着您需要在发行过程中更新多个位置,但是在性能上值得付出努力。 总的来说,这取决于您的硬盘速度。但是与完全不加载文件或不从RAM加载文件相比,文件加载速度实在令人难以置信。 希望对您有所帮助。     ,        这是相当多的文件,但是如果使用框架,这也不是意外的(是否有Zend?)。包含这么多文件的影响主要取决于服务器硬盘的速度。无论如何,文件访问都非常慢,因此,如果可以的话,请减少包含文件的数量。 但是,APC确实/可以在内存中缓存所有这些文件的操作码,这意味着在缓存无效/销毁之前不再需要磁盘搜索。 尝试关闭APC,看看有什么不同。执行时间应该明显增加。 尝试使用xdebug分析脚本。您很可能会发现还有其他问题(代码问题)比文件访问更能影响性能。