假设,我有一个文件: file.zip
// 用 filesize 获取文件大小
$filename = 'file.zip';
echo filesize($filename);
// 文件已经在内存中,用 strlen 计算长度
$content = file_get_contents($filename);
echo strlen($content);
疑惑的地方是:
我用 strlen 计算已经读到内存中的文件的长度 是否 和用 filesize 获取文件长度 必定 相同?
我现在试了几个文件都是相同的,但是,不敢确定是否一定会是相同的。
求肯定的答案!!!
不是必定相同 ... 只能说在读取小文件的时候相同而已 ...
filesize() 函数在部分 x86 系统上读取大于 2GB 的文件会返回错误的值 ...
而 file_get_contents
的长度则是正确的 ... 但 php 的变量长度受到内存的制约 ...
如果试图用 file_get_contents
读取一个超过 php memory limit
的文件 ...
则会触发一个 PHP Fatal Error ...
导致整个程序运行中止无结果返回 ...
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。