PHP-文件\存在还是数组缓存?

PHP-文件\存在还是数组缓存?,php,caching,file-exists,Php,Caching,File Exists,我有一个PHP代码,其中包括几个文件,如果它们存在的话。可能包括150个文件 在这种情况下使用文件_是否很慢?我应该构建一个数组来创建文件结构的缓存吗 是否有其他方法对文件结构进行某种缓存?150个文件在服务单个请求时? 如果是这样,您必须减少这个数字,不是因为存在150个文件,而是因为包含150个 如果它取决于所请求的参数,并且每个请求3-4个,那么就可以了 但不能将常规数组用作缓存。PHP不会在请求之间保留变量。你没有发明这样的缓存,而是重新思考你的应用程序结构 @包含$file inclu

我有一个PHP代码,其中包括几个文件,如果它们存在的话。可能包括150个文件

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


是否有其他方法对文件结构进行某种缓存?

150个文件在服务单个请求时? 如果是这样,您必须减少这个数字,不是因为存在150个文件,而是因为包含150个

如果它取决于所请求的参数,并且每个请求3-4个,那么就可以了

但不能将常规数组用作缓存。PHP不会在请求之间保留变量。你没有发明这样的缓存,而是重新思考你的应用程序结构

@包含$file

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

根据以下评论:

这将关闭整个包含文件中的错误检查。 包含一个不存在的文件比包含一个存在的文件慢一些,并且比文件检查慢很多。
这是个很坏的主意。有两种行之有效的方法可以解决这个问题

使用自动加载程序在第一次实例化时动态解析类文件位置通常需要一个严格的文件夹结构和Zend框架 递归地查找所有相关的类文件,并生成一个到位置的classname的缓存索引。因此,在第一个实例化中,您有一个更简单的自动加载程序,它查看缓存的索引,并根据类名匹配文件的位置,然后将其包含在ala Symfony1中
嗯,我并不完全同意,如果你看一个真正的Zend Framework项目,很可能接近150个包含,但是在apc中使用apc和require_once优化设置可以使这些包含非常快。@regilero,实际上它只包含少数文件。它使用自动加载器,因此当您请求一个类(即.Zend_Form_元素)时,自动加载器通过类名知道在文件系统中查找文件的位置,然后才将其包括在内。@xzyfer:是的,但即使使用自动加载器,我所看到的真实会计ZF项目的某些部分也会加载大量文件。在自动加载器后面使用apc确实有助于减少IO调用。您能详细解释这些包含文件的来源吗?是上课吗?在这种情况下,godd编写的自动加载器可以帮助您,您真的需要包含所有这些文件吗?你为什么不确定它们在那里?我有一种子主题,每个子主题都在它自己的文件夹中。默认情况下,某些文件可以存在,但不必存在。如果是,则应该加载。每个主题有多少包含PHP或HTML代码的文件?为什么不将这些文件合并到一个模板中呢?这是一个动态主题的实验,主题的某些部分可以在另一个主题中使用。因此,我非常严格地将每个文件夹/部分分开。我可以把一些文件和PHP结合起来,我会的。是PHP文件还是HTML?如果它是用户定义的主题,我会避免使用php——因此,不会使用include。使用@抑制错误是一个巨大的性能损失。每个请求执行此操作150次将对服务器造成严重影响。@Col,对于初学者,请查看注释。许多类似的声明都很容易通过简单的谷歌搜索找到。如果您真的怀疑其有效性,欢迎您亲自尝试,并为我们其他人发布结果。@aaz,请注意手册页上的红色警告对话框。目前,@error control操作符前缀甚至会禁用将终止脚本执行的关键错误的错误报告。除此之外,这意味着,如果您使用@来抑制某个函数的错误,而该函数不可用或输入错误,那么脚本将立即消失,而没有说明原因。唉,您是在把婴儿和洗澡水一起扔掉:为了抑制一种错误,您正在堵住所有其他可能的错误消息。第二个极端是将它与include一起使用,这将关闭整个include中的错误script@xzyfer你没有数字,只是听到一些谣言。努夫说。只是一个友好的建议:不要如此毫无戒心。