【发布时间】:2010-11-19 21:28:37
【问题描述】:
我编写了一个程序来生成大型 .SQL 文件,以便快速填充非常大的数据库。我用 PHP 编写了脚本。当我开始编码时,我使用的是 fopen() 和 fwrite()。当文件变得太大时,程序会将控制权返回给 shell,并且文件将不完整。
不幸的是,我不确定“太大”到底有多大。我认为它可能在 4GB 左右。
为了解决这个问题,我将文件 echo 保存到标准输出。当我像这样调用程序时,我重定向了它:
[root@localhost]$ php generatesql.php > myfile.sql
这就像一个魅力。我的输出文件最终约为 10GB。
那么,我的问题是:fopen() 和 fwrite() 是否受到文件系统的限制,它们能够生成多大的文件?如果是这样的话;这是PHP的限制吗?其他语言也会出现这种情况吗?
【问题讨论】:
-
显示一些代码...可能是因为您使用的是 32 位操作系统,并且您超出了文件位置的 int 限制(但这只是推测,除非您调用 @987654322 @ 或
fseek)... -
我一从办公室回到家就会显示一些代码。
-
@ircmaxell: fseek() 在执行的最后被调用。