我使用此代码检查文件是否存在。它必须使用通配符:
$cachedFileResultArray = glob( '/directory/' . "$slugUrl*" ) ?? null;
根据我的理解,它不会在第一次击中时停止。 有没有办法改善这个过程,比如停止先看?或者以最快的方式实现这一目标的任何其他方式?
答案 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;
}
}