正在使用“require_once”影响网站速度

is using " require_once " affect the speed of the website

我正在开发一个框架来使我的工作流程更快,就像入门主题和样板一样。因此,使工作更快的主要部分之一是复数 ...

例如,我在 function.php 中需要创建新的 post 类型,而不是为每个新的自定义 post 类型编写一大块代码(130 行).. . 我将代码移动到单独的文件夹然后我用

调用它
require_once( 'library/custom-post-type.php' );

通过这种方式,我可以将许多现成的自定义 post 类型作为文件,并且对于每个项目,我也可以添加文件以供将来维护,而不是在 1000 多个函数文件中滚动。 .. 它将是一个短文件,其中包含 require_once 列表和包含所有代码的文件夹

我的问题:

问题更像是 PHP / 服务器相关,而不是 WordPress。

编辑 1: 例如,假设我有这个文件

案例 1

1 个文件

function.php

// lots of code 

// 130 line of code to create custom post 1 

// 130 line of code to create custom post 2

// 130 line of code to create custom post 3

// 130 line of code to create custom post 4

// 130 line of code to create custom post 5 

// lots of code 

案例 2

等量代码共6个文件+5行require_once

function.php

// lots of code 

require_once( 'library/custom-post-type1.php' );
require_once( 'library/custom-post-type2.php' );
require_once( 'library/custom-post-type3.php' );
require_once( 'library/custom-post-type4.php' );
require_once( 'library/custom-post-type5.php' );

// lots of code 

自定义-post-type1.php

// 130 line of code to create custom post 1 

自定义-post-type2.php

// 130 line of code to create custom post 2

自定义-post-type3.php

// 130 line of code to create custom post 3 

自定义-post-type4.php

// 130 line of code to create custom post 4 

自定义-post-type5.php

// 130 line of code to create custom post 5 

为什么我更喜欢这种情况是因为较小的文件易于查找和编辑,并且可以将任何文件移动到其他项目并直接调用它

我想创建一些模块结构...但不能影响速度

使用 require_once,将只包含文件一次,但出于代码重复的目的,您可能会发现自己要在 50% 的函数中添加 require_once,除非您将其添加到 "index.php",这意味着您将以加载文件结束,即使不需要它,并且对于许多文件都会发生这种情况。

在我看来,我建议遵循 OOP,并创建一个 class 并遵循 PSR-4 加载依赖项,并在需要时使用此 class。

也许大家可以有不同的意见,可以提供更好的帮助:)

答案:

  1. require_once !!影响网站速度?
    • 没有
  2. 什么时候该用,什么时候不该用
  3. 过度使用它来获得更有条理的代码有什么害处?
    • 这取决于它们包含的代码,我的意思是如果所需文件包含太多代码将被执行(不仅是功能)脚本的速度要求它会变慢。

警告:如果require_once失败,按照require,将引发致命的E_COMPILE_ERROR level error

在需要时可能会降低脚本速度的文件示例可能是:

<?php
    if($condition)
    {
        // execute lots of code
    }
    else
    {
        // execute lots of code
    }

    // execute lots of code

    // those does not slow down if not called
    function f()
    {
        // ...
    }
    function f2()
    {
        // ...
    }
    function f3()
    {
        // ...
    }
?>

函数 require_once()require()include_once()include() 很简单:在调用时复制您的内容而不是行。

示例:

如果文件 functions.php 包含:

<?php
function f()
{
    // ...
}
function f2()
{
    // ...
}
function f3()
{
    // ...
}
?>

以下文件

<?php
    require_once('functions.php');

    // some code
?>

会变成这样:

<?php
    function f()
    {
        // ...
    }
    function f2()
    {
        // ...
    }
    function f3()
    {
        // ...
    }

    // some code
?>

编辑,关于你的CASEs

我建议你做两个CASE的组合:

案例 1+2

1 个文件 function.php 本身需要 5 个特定文件:

// lots of code 

require_once( 'library/custom-post-type1.php' );
require_once( 'library/custom-post-type2.php' );
require_once( 'library/custom-post-type3.php' );
require_once( 'library/custom-post-type4.php' );
require_once( 'library/custom-post-type5.php' );

// lots of code 

通过这样做,您可以包含一个名为 functions.php 的文件,其中包含所有文件可以共享的所有功能。

在此文件中,您可以通过将所有类似函数分组到一个单独的文件中并在其中要求它来更紧凑的代码。

结果是您的代码在未来的编辑中将更具可读性和可维护性,并且更多开发人员将能够同时修改单个函数的文件。

我认为您假设读取文件的时间可以忽略不计,所以对第一个陈述回答“否”。

as php执行时编译,如果你只有1个大文件,你会读取一次,加载到内存并编译并执行。

对于多个文件,做同样的事情,但你必须为每个文件添加去访问时间(是的,可以忽略不计,但不是零)(也是 SSHD 和传统 HD 之间的区别)

另外,读取内存会消耗内存,所以不使用的函数不会增加执行时间但会消耗内存,垃圾收集器对此有控制权,但无论如何你在丢弃它之前读取它。 (小尖刺)

所以恕我直言,正确答案必须是时间和记忆之间的折衷。

如果你想要更短的时间,你需要更多的内存和更少的包含以避免访问时间。

内存总是很昂贵,所以使用更少的内存并稍微增加时间可能是更好的选择。您还可以获得更具可读性的代码。

所以真正的答案取决于应用程序。 在您使用框架的情况下,答案是包含文件并增加执行时间。