file_exists()
函數用于檢查給定的文件或目錄是否存在
function fileExistsCached($filename, $cacheDuration = 60) {
static $cache = array();
if (!isset($cache[$filename])) {
$result = file_exists($filename);
$cache[$filename] = $result;
if (!$result) {
// 如果文件不存在,緩存結果并設置過期時間
$cache[$filename] = false;
if (is_writable(sys_get_temp_dir())) {
touch(sys_get_temp_dir() . '/' . md5($filename));
}
}
}
return $cache[$filename];
}
stat()
函數:stat()
函數比 file_exists()
更快,因為它在檢查文件存在的同時還可以獲取文件的元數據。但是,stat()
函數可能會受到文件系統性能的影響。function fileExistsWithStat($filename) {
return file_exists($filename) && stat($filename) !== false;
}
fopen()
函數:fopen()
函數會嘗試打開文件,如果文件不存在,它會返回 false
。這種方法比 file_exists()
更快,因為它不會產生額外的磁盤訪問。但是,你需要確保在檢查文件存在后正確處理文件句柄。function fileExistsWithFopen($filename) {
$handle = fopen($filename, 'r');
if ($handle) {
fclose($handle);
return true;
}
return false;
}
請注意,這些方法可能會受到文件系統性能、磁盤訪問速度和其他因素的影響。在實際應用中,你可能需要根據你的具體需求和場景選擇最合適的方法。