Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含函数文件的效率(在PHP中)_Php_Performance_Include_Server Side Includes - Fatal编程技术网

包含函数文件的效率(在PHP中)

包含函数文件的效率(在PHP中),php,performance,include,server-side-includes,Php,Performance,Include,Server Side Includes,如果我有大量的函数,那么最好将它们都保存在一个大文件中,还是将它们分离到多个相关函数的文件中。我所说的更好是指在可维护性和服务器处理请求方面都更高效 例如,现在我的所有文件都在一个名为include.php的文件中。但拥有一个包含以下内容的包含文件是否更明智: <?php include('/functions/user.php'); include('/functions/admin.php'); include('/functions/content.php'); includ

如果我有大量的函数,那么最好将它们都保存在一个大文件中,还是将它们分离到多个相关函数的文件中。我所说的更好是指在可维护性和服务器处理请求方面都更高效

例如,现在我的所有文件都在一个名为
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');
?>


为了便于维护,必须将它们分开。我怀疑性能是否会受到影响,但即使会(只是一点点),您最好还是编写可维护、可读的代码。

就可维护性而言,通常最好将您的功能划分为相关的组。(如上面所示,
user.php
将只是与用户相关的函数)

如果您知道每次需要包含任何文件时都需要所有包含的文件,那么您应该只拥有一个包含所有这些包含的文件。
否则,它就无法实现“一网打尽”文件的目的。

以我的经验,如果你谈论的是函数库的几十个左右的文件,那么多重包含和/或要求通常不会让你太多。特别是如果您能够在请求生命周期中仅为特定文件调用一次语句


当您进入OOP或高度复杂的功能/过程类型体系结构时,它开始显示性能的影响,其中可能有数百个不同的类/文件。但通常情况下,您希望通过缓存/编译完成某种缓解

您需要确保使用的是像XCache或APC这样的PHP缓存。你的PHP文件应该都在内存中,你根本不应该担心你的文件会碰到磁盘


如果您将志同道合的函数/类分解到它们自己的文件中,我肯定会发现这会更容易。

我在central.config文件中有一个包含列表

对于所有OOP类,虽然我使用autoload->我知道它稍微慢一点,但它可以避免在创建新类时包含它们。它们只按要求加载


另外,include比include快一次,因为它不必检查文件是否已经包含。

XCache和APC(除非另有特别配置)将检查文件修改时间,以确定是否应处理文件的新版本。如果包含大量的include,这会对性能产生相当大的影响。在代码已修复的生产服务器上,您应该真正关闭此功能。上传新版本的代码时,您将不得不手动刷新缓存,从而获得一个不错的性能提升。-1,将所有功能放在一个文件中并不意味着它无法维护、无法读取。这取决于你怎么做。事实上,即使有多个包含,它仍然很可能无法维护和无法读取。实际上,如果没有加速器,它会感觉很慢。磁盘读取仍然很昂贵。