PHP:file_exists vs stream_resolve_include_path - 哪个性能更好?

11 浏览
0 Comments

PHP:file_exists vs stream_resolve_include_path - 哪个性能更好?

最近,php开发人员开始疑惑在检查文件是否存在时,是更好使用file_exists()还是stream_resolve_include_path()(用于包含文件、缓存系统等)。这让我想知道是否有人对这两种选项进行过性能测试,包括页面加载时间、服务器性能和内存使用。我在这里没有找到任何解决这个问题的东西,所以觉得是时候我们来做一下了。

0
0 Comments

PHP: file_exists vs stream_resolve_include_path - 哪个更高效?

问题的出现原因:

这个问题的出现是因为想要知道在PHP中,file_exists函数和stream_resolve_include_path函数哪个更高效。为了回答这个问题,作者进行了一些基准测试。

解决方法:

首先,作者解释了file_exists函数和stream_resolve_include_path函数的工作原理。他们都是php_stat()核心函数的子函数。文件存在检查主要是通过virtual_file_ex()和virtual_access()函数来实现的。而stream_resolve_include_path()函数是通过zend_resolve_path()和php_resolve_path_for_zend()函数来实现的。

接下来,作者展示了一个基准测试的代码,通过循环调用这些函数来测试它们的性能。测试结果表明,is_file()函数的性能最好,而stream_resolve_include_path()函数的性能最差。

作者还进行了第二个版本的基准测试,这个版本更加简便,可以很容易地添加新的函数进行测试。

通过这些基准测试的结果,我们可以得出结论:is_file()函数比file_exists()函数和stream_resolve_include_path()函数更高效。因此,在开发中应该尽可能使用is_file()函数来判断文件是否存在。

0