什么时候解析php包含文件?

时间:2016-06-17 11:44:24

标签: php performance php-include

何时解析PHP包含文件?在启动时还是在执行期间?

我的网络表单调用单个PHP脚本。根据URL中传递的参数,switch / case条件确定脚本将执行的操作。交换机中的每个“案例”都有自己的包含文件。

如果在初始加载过程中解析了包含文件,那么我的php脚本将占用更多的内存/时间进行处理,这使我相信从我的网络表单中调用的单个php文件更好,而不是包含它需要的内容

如果在需要时解析包含文件(因此,当代码的一个分支到达特定的case语句时,它会执行include),它会告诉我我的代码在内存上会相当保守。

所以....我的问题......什么时候解析PHP包含文件?在初始加载时,还是在执行期间?

(注意......我在这里找不到答案,我已阅读http://php.net/manual/en/function.include.php

3 个答案:

答案 0 :(得分:3)

如果 {<1>}语句在运行时 ,则包含文件。为了非常简洁地总结这意味着什么,永远不会包含以下文件:

include

答案 1 :(得分:2)

由于您过多关注来自太多内容的内存使用情况,我觉得除了直接回答您的问题之外,更多细节会更有用。

首先,要直接回答您的问题,PHP文件一加载就会被解析 - 如果文件包含语法错误,您将立即被告知;它不会等到达到那行代码。但是,只有在执行包含include语句的特定代码行时才包含后续文件。

您关注内存使用情况,但拥有大量内容文件通常不是主要的内存问题,也不是主要的性能问题。实际上,任何大小的大多数现代PHP应用程序都将使用一个框架库,为每个页面加载加载数百个PHP文件。内存和性能问题更可能是由代码中的错误引起的,而不是简单地加载太多代码。

如果您担心此内存和性能,则应考虑使用PHP的OpCache功能。启用此功能后,PHP会在内存中存储其已包含在系统中的所有文件的已编译状态。因此,当它再次运行页面时,它不需要在遇到include语句时实际加载或解析任何内容;它只是从缓存中提取它。

使用OpCache,您可以编写包含大量文件的代码,而且不会有任何性能损失。

好消息是OpCache在最近的PHP版本中默认启用,并且对开发人员完全透明 - 您甚至不需要知道它在那里;您打开和关闭之间唯一的区别就是您的网站运行得更快。

因此,首先,确保您的PHP版本是最新的(v5.5或更高版本)。然后确保在PHP.ini文件中启用了OpCache。然后坐下来,不要担心这些事情。

答案 2 :(得分:0)

在执行期间解析include语句中包含的文件。当你的php代码命中include语句时,它将开始解析文件以查看其中的内容。 来自w3schools

  

include(或require)语句接受所有文本/代码/标记   存在于指定的文件中并将其复制到使用该文件的文件中   包含声明。

还有其他类似主题的问题:

In PHP, how does include() exactly work?