is_file 判斷檔案是否存在且檢查指定的檔案名稱是否為正常的檔案;
file_exists 判斷檔案是否存在或目錄是否存在;
is_dir 判斷目錄是否存在;
檢視手冊,雖然這兩個函數的結果都會被緩存,但是is_file卻快了N倍。
還有一個值得注意的:
檔案存在的情況下,is_file比file_exists要快N倍;
檔案不存在的情況下,is_file比file_exists要慢;
結論是,file_exits函數並不會因為該檔案是否真的存在而影響速度,但是is_file影響就大了。
首先要提出的問題是,is_file真的可以取代file_exists使用嗎?答案是否定的。為什麼?原因很簡單,is_file有快取
我們可以用下面的程式碼來測試一下:
複製程式碼
複製程式碼
程式碼如下:
$filename = 'test.txt';
if (is_file($filename . } else {
echo "$filename no exists!n";
}
sleep(10);
} else {
echo "$filename no exists!n";
在上面的程式碼中,第一次使用is_file函數判斷檔案是否存在,然後呼叫sleep函數睡眠10秒。在這10秒內,我們要把test.txt檔案刪除。最後看看第二次呼叫is_file函數的結果。輸出結果如下:
test.txt exists!