php文件大小 - PHP中的is_file或file_exists




rm write (3)

我需要检查文件是否在指定位置($ path。$ file_name)的硬盘上。

is_file()file_exists()函数之间的区别是什么?在PHP中使用哪个更好/更快?


Answers

is_file()是最快的,但最近的基准测试显示file_exists()对我而言稍快。 所以我想这取决于服务器。

我的测试基准:

benchmark('is_file');
benchmark('file_exists');
benchmark('is_readable');

function benchmark($funcName) {
    $numCycles = 10000;
    $time_start = microtime(true);
    for ($i = 0; $i < $numCycles; $i++) {
        clearstatcache();
        $funcName('path/to/file.php'); // or 'path/to/file.php' instead of __FILE__
    }
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    echo "$funcName x $numCycles $time seconds <br>\n";
}

编辑:@Tivie感谢您的评论。 将周期数从1000更改为10k。 结果是:

  1. 当文件存在时

    is_file x 10000 1.5651218891144秒

    file_exists x 10000 1.5016479492188秒

    is_readable x 10000 3.7882499694824秒

  2. 当文件不存在时

    is_file x 10000 0.23920488357544秒

    file_exists x 10000 0.22103786468506秒

    is_readable x 10000 0.21929788589478秒

编辑:移动clearstatcache(); 在循环内。 感谢CJ丹尼斯。


如果给定的路径指向一个目录, is_file()将返回false 。 如果给定的路径指向有效的文件目录, file_exists()将返回true 。 所以这完全取决于你的需求。 如果你想特别知道它是否是一个文件,使用is_file() 。 否则,使用file_exists()


Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"




php file exists