在 PHP 中包含函数文件的效率问题

13
如果我有很多函数,是把它们全部放在一个大文件里更好,还是把它们分成几个相关函数的文件更好?所谓更好,是指对于可维护性和服务器处理请求的效率来说是否更好。
例如,目前我的所有文件都在一个名为"include.php"的文件中。但将其改为包含其他文件的包含文件是否更明智呢?
<?php
 include('/functions/user.php');
 include('/functions/admin.php');
 include('/functions/content.php');
 include('/functions/nav.php');
 include('/functions/database.php');
 include('/functions/other_junk.php');
?>
5个回答

22

出于可维护性的考虑,一定要将它们分开。我怀疑性能不会受到影响,但即使有(只是很小的)影响,编写易维护、易读的代码也更好。


1
-1,所有函数都在一个文件中并不意味着它难以维护和阅读。这取决于你如何做。事实上,即使使用多个包含文件,仍然有可能难以维护和阅读。 - Pacerier

3

您需要确保使用像XCache或APC这样的PHP缓存。您的PHP文件都应该在内存中,并且您不必担心包含文件会打到磁盘上。

如果将类似功能/类分解为它们自己的文件,那么一定会更容易。


4
除非经过特别配置,否则XCache和APC会检查文件的修改时间来确定是否处理文件的新版本。如果有大量包含文件,这将严重影响性能。 在生产服务器上,如果代码是固定的,您应该关闭此功能。这样可以获得一些不错的性能提升,但代价是您需要在上传新代码版本时手动清除缓存。 - Mike

2

从可维护性角度考虑,通常最好将函数分成相关组。 (就像您上面展示的那样,user.php仅包含与用户相关的函数)。

如果您知道每次需要包含任何文件时都需要所有已包含的文件,则应仅拥有包含所有这些文件的文件。 否则,它会使“捕获所有”文件失去意义。


2

根据我的经验,如果你需要引用几十个文件的函数库,多次包含和/或引用通常不会对性能造成太大影响。特别是如果你能在请求生命周期中仅调用特定文件的语句一次。

当涉及到面向对象编程(OOP)或高度复杂的函数/过程式架构时,可能会有数百个不同的类/文件,这时性能损失就会显现出来。但通常在这种情况下,你会通过缓存/编译等方式进行某种形式的缓解。


如果您没有加速器,实际上它会感觉很慢。磁盘读取仍然很昂贵。 - Pacerier

0

我有一个包含列表在一个中央的.config文件中。

对于所有的OOP类,我使用自动加载 -> 我知道它略微慢一些,但这样可以避免每次创建新类时都要包含它们。它们只在需要时被加载。

另外,include比include_once更快,因为它不必检查文件是否已经被包含了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接