提高文件存在检查的速度

时间:2017-04-13 17:23:38

标签: php

我使用此代码检查文件是否存在。它必须使用通配符:

$cachedFileResultArray = glob( '/directory/' . "$slugUrl*" ) ?? null;

根据我的理解,它不会在第一次击中时停止。 有没有办法改善这个过程,比如停止先看?或者以最快的方式实现这一目标的任何其他方式?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用DirectoryIterator来加快搜索速度。试试这个功能和基准性能。

function globIterator($dir, $pattern) {
    $directory = new RecursiveDirectoryIterator($dir);
    $iterator = new RecursiveIteratorIterator($directory);
    foreach($iterator as $file) {
        if (preg_match($pattern, $file) === 1){
            return $file;
        }
    }
    return null;
}

如果通配符不是正则表达式,最好将preg_match替换为strpos,因为PHP文档recommends,所以foreach循环会像这样锁定:< / p>

foreach ($iterator as $file) {
    if (strpos($file, $pattern) !== false) {
        return $file;
    }
}