【问题标题】:include inside a loop [duplicate]包含在循环中[重复]
【发布时间】:2013-04-03 17:48:32
【问题描述】:

我有一个函数,它可以像这样读取存储在外部文件中的值

function MyFunction($param) {
include ($MyInclude);
...do the job
}

我为每个循环实例调用这个函数

foreach ($fileArray as $param => $processed) {
MyFunction($param);
...rest of the job
}

我是否使服务器内存过载,或者文件是否只加载一次并从缓存中读取?我需要解决这个问题吗?我问是因为“$fileArray”会随着时间的推移而增长,处理越来越多的文件。

【问题讨论】:

标签: php loops include


【解决方案1】:

include 将始终“复制”这些文件的内容,就好像它们是在那里输入的一样。如果您在这些文件中包含甚至可能导致错误的定义。

如果您在该文件中只有一些变量文字,那么它可能不会产生错误,但内存使用情况取决于您对这些文字的处理方式。如果你只是包含在函数内部而不返回它们中的任何一个或将它们复制到其他外部变量等中,它们将在函数返回时被垃圾回收。

【讨论】:

    【解决方案2】:

    它每次都会包含它,如果你有定义会导致错误(因为它会尝试重新定义某些东西)。改用include_once 或重构您的函数,这样就不需要在每次迭代时都使用include(我会说这更好)。

    【讨论】:

      【解决方案3】:

      我认为在函数中包含文件不是一个好主意,尤其是多次。如果需要这样做,可以使用 require_once 代替 include。

      但是,我建议您将其包含在函数之外。然后使用您需要的任何变量作为全局变量。

      【讨论】:

        猜你喜欢
        • 2020-08-24
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多