file_exists() 在 PHP 中太慢了。任何人都可以建议一个更快的替代方案吗?

2022-08-30 11:58:24

在我们的网站上显示图像时,我们会通过调用 来检查文件是否存在。如果文件丢失,我们会回退到虚拟图像。file_exists()

但是,分析表明,这是生成页面的最慢部分,每个文件最多需要1/2毫秒。我们只测试了大约40个文件,但这仍然将20毫秒推向页面加载时间。file_exists()

任何人都可以提出一种方法来使这一过程更快吗?有没有更好的方法来测试文件是否存在?如果我构建某种缓存,我应该如何保持同步。


答案 1

file_exists()应该是一个非常便宜的操作。另请注意,它会构建自己的缓存以帮助提高性能。file_exists

请参见: http://php.net/manual/en/function.file-exists.php


答案 2

使用绝对路径!根据您的设置,PHP会检查所有(!)这些dirs,如果您检查相对文件路径!在检查是否存在之前,您可以暂时取消设置。include_pathinclude_path

realpath()做同样的事情,但我不知道它是否更快。

但文件访问 I/O 始终很慢。通常,硬盘访问计算处理器中的某些内容慢。


推荐