PHP is_file veya File_exists

2 Cevap php

Ben bir dosya belirtilen konumda ($ yol. $ File_name) HDD'nin üzerinde olup olmadığını kontrol etmeniz gerekir.

is_file() and file_exists() işlevleri ve hangi arasındaki fark PHP kullanmak daha iyi / hızlı hangi mi?

2 Cevap

Verilen yolu bir dizinin işaret ediyorsa is_file() false dönecektir. file_exists() true dönecektir eğer geçerli bir dosya or dizin yolunu puan verilir. Yani sizin ihtiyaçlarınıza tamamen bağlı olacaktır. Eğer bir dosya ya da değilse, specifically bilmek kullanmak istiyorsanız is_file(). Aksi takdirde, kullanımı file_exists().

is_file() hızlı olduğunu, ancak son kriter file_exists() Benim için biraz daha hızlı olduğunu gösteriyor. Bu yüzden sunucusuna bağlıdır sanırım.

Benim testi kriter:

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

Edit: Yorumlarınız için teşekkür Tivie @. 1000 10k devir sayısı değişti. Sonuç:

  1. zaman dosya exists:

    is_file x 10000 1,5651218891144 saniye

    File_exists x 10000 1,5016479492188 saniye

    is_readable x 10000 3,7882499694824 saniye

  2. zaman dosya does not exist:

    is_file x 10000 ,23920488357544 saniye

    File_exists x 10000 ,22103786468506 saniye

    is_readable x 10000 ,21929788589478 saniye

Edit: taşındı clearstatcache (); döngü içinde. Teşekkürler CJ Dennis.