is_file o file_exists in PHP

Devo controllare se un file è su HDD in una posizione specificata (path $. $ Nome_file).

Qual è la differenza tra le is_file() e file_exists() e quale è meglio / più veloce da usare in PHP?

is_file() restituirà false se il path indicato punta a una directory. file_exists() restituirà true se il path indicato punta a un file o directory valido. Quindi, dipenderebbe interamente dalle tue esigenze. Se vuoi sapere in particolare se si tratta di un file o no, usa is_file() . Altrimenti, utilizzare file_exists() .

is_file() è il benchmark più veloce, ma recente mostra che file_exists() è leggermente più veloce per me. Quindi penso che dipenda dal server.

Il mio benchmark di test:

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

Modifica: @Tivie grazie per il commento. Numero di loops modificato da 1000 a 10k. Il risultato è:

  1. quando il file esiste :

    is_file x 10000 1.5651218891144 secondi

    file_exists x 10000 1.5016479492188 secondi

    is_readable x 10000 3.7882499694824 secondi

  2. quando il file non esiste :

    is_file x 10000 0.23920488357544 secondi

    file_exists x 10000 0,22103786468506 secondi

    is_readable x 10000 0,21929788589478 secondi

Modifica: spostato clearstatcache (); all'interno del ciclo. Grazie CJ Dennis.