2012-07-10 49 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