0

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

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

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

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

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

4

3 回答 3

1

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

于 2013-04-03T17:52:46.510 回答
1

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

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

于 2013-04-03T17:56:00.763 回答
0

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

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

于 2013-04-03T18:50:36.693 回答