2017-04-13 16 views
0

このコードを使用してファイルの存在を確認します。ワイルドカードを使用する必要があります。ファイルの存在チェックの速度を向上させる

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

私の理解では、最初のヒット時に停止しません。 このプロセスを改善する方法はありますか?たとえば、最初にヒットした後の見た目を停止するなどですか?またはこれを可能な最速の方法で実現するための他の方法はありますか?

答えて

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; 
} 

ワイルドカードが正規表現ではない場合、とてもforeachループは、このようにロックされる、PHPのドキュメントrecommendsとして、strpospreg_matchを交換するのが良いでしょう:

foreach ($iterator as $file) { 
    if (strpos($file, $pattern) !== false) { 
     return $file; 
    } 
} 
関連する問題