何时解析PHP包含文件?在启动时还是在执行期间?
我的网络表单调用单个PHP脚本。根据URL中传递的参数,switch / case条件确定脚本将执行的操作。交换机中的每个“案例”都有自己的包含文件。
如果在初始加载过程中解析了包含文件,那么我的php脚本将占用更多的内存/时间进行处理,这使我相信从我的网络表单中调用的单个php文件更好,而不是包含它需要的内容
如果在需要时解析包含文件(因此,当代码的一个分支到达特定的case语句时,它会执行include),它会告诉我我的代码在内存上会相当保守。
所以....我的问题......什么时候解析PHP包含文件?在初始加载时,还是在执行期间?
(注意......我在这里找不到答案,我已阅读http://php.net/manual/en/function.include.php)
答案 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)语句接受所有文本/代码/标记 存在于指定的文件中并将其复制到使用该文件的文件中 包含声明。
还有其他类似主题的问题: