【发布时间】:2008-10-02 13:11:45
【问题描述】:
当我尝试在PHP 中读取一个大小适中的文件时,fopen 失败。 A 6 meg file 让它窒息,尽管100k 周围的小文件就可以了。我读到有时需要用-D_FILE_OFFSET_BITS=64 标志重新编译PHP 以读取超过20 gig 的文件或一些荒谬的东西,但我不应该对6 meg 文件没有问题吗?最终我们会想要读取大约 100 兆的文件,如果能够打开它们然后使用 fgets 逐行读取它们会很好,就像我可以处理较小的文件一样。
对于PHP 中的超大文件进行读取和操作有哪些技巧/解决方案?
更新:这是一个在我的 6 meg 文件上失败的简单代码块的示例 - PHP 似乎没有抛出错误,它只是返回 false。也许我在做一些非常愚蠢的事情?
$rawfile = "mediumfile.csv";
if($file = fopen($rawfile, "r")){
fclose($file);
} else {
echo "fail!";
}
另一个更新:感谢大家的帮助,事实证明这确实是一件非常愚蠢的事情 - 权限问题。当较大的文件没有时,我的小文件莫名其妙地具有读取权限。呵呵!
【问题讨论】:
-
您只是想通过文件吗? IE。下载?或者您实际上是否出于某种目的解析文件中的数据?谢谢。
-
它不应该在不产生警告/错误的情况下失败。请使用 error_reporting(E_ALL) 打开所有错误,并确保将 display_errors 设置为打开以在您的浏览器中显示,或检查您的网络服务器错误日志。
标签: php file large-files