-2

glob()関数がかなり遅いことは知っていますが、GLOB_ONLYDIR引数でどのように機能しますか?それでもすべてのファイルをチェックしますか、それとも何らかのインデックスなどを使用しますか?

4

1 に答える 1

1

ソースを見て:

/* we need to do this everytime since GLOB_ONLYDIR does not guarantee that
 * all directories will be filtered. GNU libc documentation states the
 * following: 
 * If the information about the type of the file is easily available 
 * non-directories will be rejected but no extra work will be done to 
 * determine the information for each file. I.e., the caller must still be 
 * able to filter directories out. 
 */
if (flags & GLOB_ONLYDIR) {
    struct stat s;

    if (0 != VCWD_STAT(globbuf.gl_pathv[n], &s)) {
        continue;
    }

    if (S_IFDIR != (s.st_mode & S_IFMT)) {
        continue;
    }
}

したがって、PHPは、ディレクトリ以外のファイルのみを要求したかどうかに関係なく、各ファイルをチェックする必要があります。

于 2013-03-13T15:41:32.253 に答える