Php 正在使用;要求“一次”;影响网站的速度

Php 正在使用;要求“一次”;影响网站的速度,php,mysql,wordpress,performance,pagespeed,Php,Mysql,Wordpress,Performance,Pagespeed,我正在开发一个框架,使我的工作流程更快,就像一个入门主题加样板。因此,使工作更快的主要部分之一是多元化 例如,在function.php中,我需要创建新的post类型,而不是为每个新的自定义post类型编写一大块代码(130行)。。。我把代码移到了分开的文件夹,然后我用 require_once( 'library/custom-post-type.php' ); 通过这种方式,我可以有许多现成的自定义文章类型作为文件,对于每个项目,我可以只添加文件,而不是在非常大的1000+功能文件滚动也为

我正在开发一个框架,使我的工作流程更快,就像一个入门主题加样板。因此,使工作更快的主要部分之一是多元化

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

require_once( 'library/custom-post-type.php' );
通过这种方式,我可以有许多现成的自定义文章类型作为文件,对于每个项目,我可以只添加文件,而不是在非常大的1000+功能文件滚动也为未来的维护。。。这将是一个简短的文件,其中包含一个require_once列表和一个文件夹,其中所有代码都在单独的文件中

我的问题:

  • 需要一次吗!!影响网站的速度
  • 什么时候该用,什么时候不该用
  • 过度使用它来获得更有序的代码有什么害处
与WordPress相比,这个问题更像是与PHP/server相关的

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

案例1

1文件

function.php

案例2

共有6个文件具有相同数量的代码+5行require_

function.php

custom-post-type1.php

custom-post-type2.php

custom-post-type3.php

custom-post-type4.php

custom-post-type5.php

我之所以喜欢这个案例,是因为较小的文件易于查找和编辑,并且可以将任何文件移动到其他项目,然后调用它


我想创建一些模块结构。。。但是不会影响速度

使用require\u一次,只会包含文件一次,但是为了代码复制的目的,您可能会发现自己将在50%的函数中添加require\u一次,除非您将其添加到“index.php”中,这意味着您将以加载文件结束,即使它不是必需的,并且这将发生在许多文件中

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

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

答案:

  • 需要一次吗!!影响网站的速度?
    • 没有
  • 什么时候该用,什么时候不该用
    • 当需要将它包含在整个PHP脚本中时,应该使用它,请阅读
  • 过度使用它来获得更有序的代码有什么害处?
    • 这取决于它们包含的代码,我的意思是,如果所需文件包含太多将要执行的代码(不仅仅是功能),则需要它的脚本的速度将降低
  • 警告:如果一次
    require\u失败,根据
    require
    ,将引发致命的
    E\u编译错误级别错误

    在需要时可能会减慢脚本速度的文件示例如下:

    <?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()
        {
            // ...
        }
    ?>
    
    下面的文件

    <?php
        require_once('functions.php');
    
        // some code
    ?>
    
    通过这样做,您可以包含一个名为
    functions.php
    的文件,其中包含所有文件可以共享的所有函数

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


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

    我认为您假设读取文件的时间可以忽略,以对第一条语句回答“否”

    当php在执行时编译时,如果您只有一个大文件,您将读取一次,加载到内存中,然后编译并执行

    对于多个文件,执行相同的操作,但必须为每个文件添加反访问时间(可以忽略,但不能为零)(这也是SSHD和传统HD之间的区别)

    此外,读取内存会消耗内存,因此未使用的函数不会增加执行时间,但会消耗内存,垃圾收集器可以控制这一点,但无论如何,您在丢弃它之前读取它。(小刺)

    因此,正确的答案是,这必须是时间和记忆之间的折衷

    如果你想减少时间,你需要更多的内存和更少的内存来避免访问时间

    正如往常一样,内存是昂贵的,所以使用更少的内存和稍微增加一点时间可能是一个更好的选择。您还可以获得更可读的代码

    因此,真正的答案取决于应用程序。
    在您处理框架的情况下,答案是包含文件,并在执行过程中增加一点时间。

    关于require\u一旦我知道它将包含文件一次。。。但关键是,这需要处理和时间,例如,当你加载一幅图像而不是加载100幅图像,然后在一个大图像中加载它,这将使网站更快,因为我认为require_once应该作为一行代码工作。在它工作之后,就像我调用的文件在require_once代码行的位置得到了一个拷贝和粘贴。关于索引,我将页面的各个部分制作成单独的文件,例如,投票。称之为vote_blox.PHP,然后在我需要的任何页面上,我通过require_调用它,一旦我知道我可以将其制作成一个小部件,但我认为require_once将比创建小部件使用更少的资源。。。此外,它还实现了可插拔性的目标我理解你的观点,但我认为代码中的require\u一次会变成很多require\u,如果你决定将这些文件移动到另一个目录,你必须在代码中更改所有require\u一次,这就是PSR-4标准更好的原因:)谢谢你帮了大忙,你的观点很好,但对于这个问题,第二个人详细回答了我的问题。谢谢。。。你能解释一下最后一点吗。这取决于它们包含的代码。并给出一些案例,它可能会因为问题?谢谢编辑。。。我看到你最后一次了
    // 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 
    
    <?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()
        {
            // ...
        }
    ?>
    
    <?php
    function f()
    {
        // ...
    }
    function f2()
    {
        // ...
    }
    function f3()
    {
        // ...
    }
    ?>
    
    <?php
        require_once('functions.php');
    
        // some code
    ?>
    
    <?php
        function f()
        {
            // ...
        }
        function f2()
        {
            // ...
        }
        function f3()
        {
            // ...
        }
    
        // some code
    ?>
    
    // 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