2012-07-10 51 views
4

我想檢查存儲器上可用的空間,我在其中存儲用戶的附件。我去了disk_free_space()disk_total_space()。其結果是:php disk_total_space()減去disk_free_space()不等於佔用空間

自由空間:5.47 GB
總面積:5.86 GB

所以佔用的空間= 0.39 GB

我也通過這些文件循環以獲得它們的大小filesize()。總共文件佔用18.34 GB。 (最大文件大小爲4 MB,所以在PHP手冊中關於2GB不會注意的說明適用)

所以:

總面積 - 自由空間=佔用的空間

爲什麼?

文件系統位於HP-UX上。我使用同一個帳戶測量了所有的值 - 通過使用互聯網瀏覽器執行腳本,我運行了php腳本中的所有命令。

我也檢查了Windows中的函數。結果是確定的。

我通過相關的功能(How to get the disk space on a server?How to determin how much space is freeon your server? (php)How to detect the server space enough for the uploaded file or no?How to get the disk space on a server?Is it possible to get special Local Disk information from PHP?php disk_total_space)一些其他的問題去了,但沒有找到答案。

+0

我認爲ü系統有一些分區,請嘗試disk_free_space('/ home /')和disk_total_space('/ home /') – Sergey 2012-07-10 10:37:52

+0

@Sergey謝謝。他們都返回了'0'。 – bostaf 2012-07-10 10:50:07

回答

4

根據操作系統和使用的文件系統,這高度依賴於您調用函數的目錄。原因是,linux將多個驅動器裝入一棵大樹。你不能只調用disk_total_space('/'),因爲這隻會給你根分區的大小。嘗試disk_total_space($attachmentFolder);

+0

完美。謝謝!我試圖在PHP手冊中找到操作系統相關的信息和提示,但沒有成功。我錯過了嗎?你能提供一個我可以更多地瞭解它的來源嗎? – bostaf 2012-07-10 10:59:53

+1

很難說^^這就是基於NIX的OS如何組織它們的文件系統(就像在一棵樹中提到的那樣)。發生的一個問題是,並非每個「文件系統」都是「真實的」。有虛擬文件系統,如設備(通常是'/ dev')或進程('/ proc'),根本就沒有大小(或無限大,取決於視角)。這意味着,如果一個與FS相關的操作總是影響每個安裝的文件系統,它可能會結束不太好......因此,不知道,也許'man mount' http://linux.die.net/man/8/mount作爲源?) – KingCrunch 2012-07-10 11:09:41

+0

好的。謝啦 :) – bostaf 2012-07-10 11:19:09