2012-01-16 45 views
1

這是我第一篇文章。是否可以檢查文件是否存在,而無需在Linux中向硬盤發出請求?

我想檢查一個文件是否存在,但不使用硬盤。例如看看這段代碼:

<?php 
$filename = '/path/to/foo.txt'; 

if (file_exists($filename)) { 
    echo "The file $filename exists"; 
} else { 
    echo "The file $filename does not exist"; 
} 
?> 

據我所知ext4是日誌文件系統。這是否意味着腳本可以通過查看日誌來檢查文件是否存在,即不觸及硬盤的主存儲器?

謝謝你的時間。

UPD。

是否有保持硬盤在主內存journal,這樣文件中存在的操作也可以訪問硬盤做任何文件系統?

回答

5

軸頸(一)生活在磁盤上,和(b)完全解決了另一個問題。

當你做出這樣的呼籲,內核會問文件系統。如果文件結構的必要塊被緩存在內存中,它將不會訪問該磁盤。如果他們不是,它會的。

+0

謝謝,你的答案澄清了很多。但是我想知道一件事情:如果我一次創建2個file_exists請求,是訪問硬盤的相同部分還是硬盤驅動器的不同部分? – Fedor 2012-01-16 21:19:12

+0

他們可能到處都是。這些目錄不適合一個磁盤塊,並且文件系統不一定將它們放在一起。 – bmargulies 2012-01-16 22:36:29

-1

它必須至少訪問硬盤,看看它的存在。現在實際上打開文件?我想不會。

+0

是否有任何文件系統在主內存中保留硬盤的日誌,以便文件存在的操作可以在不訪問硬盤的情況下完成? – Fedor 2012-01-16 20:51:01

+2

我從來沒有聽說過。這隻會佔用太多的內存,並沒有太大的用處。有沒有理由不希望它訪問硬盤? – BrettAdamsGA 2012-01-16 20:55:49

+1

另一個問題是,每次都需要將日誌,表,列表等內容加載到內存中,因爲大多數內存都是不穩定的。 – BrettAdamsGA 2012-01-16 21:01:53

1

第一個文件系統日誌不完全在內存中保存,並在任何情況下不包含在文件系統中的所有元數據。它僅用作一種工具,可以更快地從不潔淨的卸載中恢復。