1

我有一个 PHP 代码,其中包含多个文件(如果存在)。可能需要包含 150 个文件。

在这种情况下使用 file_exists 会很慢吗?我应该构建一个数组来创建文件结构的缓存吗?

还有其他方法可以对文件结构进行某种缓存吗?

4

3 回答 3

1

服务单个请求期间有 150 个文件?
如果是这样,你必须减少这个数字,不是因为 150 个 file_exists 而是因为 150 个包含。

如果它取决于请求的参数并且每个请求为 3-4,则可以。

但是,您不能将常规数组用作缓存。PHP 不保留请求之间的变量。您不必发明这种缓存,而是重新考虑您的应用程序结构。

于 2011-02-22T11:27:01.230 回答
1

这是一个非常糟糕的主意。有两种经过验证的方法。

  • 在第一次实例化时使用自动加载器动态解析类文件位置通常需要严格的文件夹结构(ala Zend Framework)
  • 递归查找所有相关的类文件并生成类名的缓存索引到位置。所以在第一次实例化时,你有一个更简单的自动加载器,它查看缓存的索引并根据类名匹配文件的位置,然后包含它(ala Symfony1)
于 2011-02-22T12:26:09.800 回答
-3

@include($file)

include尝试打开文件时隐式检查文件是否存在。

根据以下评论:

  • 这将关闭整个包含文件中的错误检查。
  • 包含一个不存在的文件比包含一个存在的文件要慢一些,并且比file_exists检查慢得多。
于 2011-02-22T12:20:50.077 回答