Articles of 大文件

从PHP的内容长度标题被覆盖!

我试图找出为什么PHP的Content-Length头被覆盖。 这是demo.php <?php header("Content-Length: 21474836470");die; ?> 请求获取标题 curl -I http://someserver.com/demo.php HTTP/1.1 200 OK Date: Tue, 19 Jul 2011 13:44:11 GMT Server: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze3 Content-Length: 2147483647 Cache-Control: must-revalidate Content-Type: text/html; charset=UTF-8 请参阅内容长度? 它最大为2147483647字节,即2GB。 现在,如果修改demo.php像这样 <?php header("Dummy-header: 21474836470");die; ?> 标题不会被覆盖。 HTTP/1.1 200 OK Date: Tue, 19 Jul 2011 13:49:11 GMT Server: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze3 […]

远程linux服务器到远程linux服务器大型稀疏文件复制 – 如何?

我有两个双胞胎CentOS 5.4服务器,每个都安装了VMware Server。 假设我总是使用稀疏文件来pipe理我的VMware虚拟机,将虚拟机文件从一台服务器复制到另一台服务器的最可靠和最快速的方法是什么? 由于文件非常大(50 GB),vm的文件很难复制,但是由于它们是稀疏文件,我认为可以通过某些方法来提高复制的速度。

大文件调用close()后不立即刷新到磁盘?

我用我的Python脚本创build大文件(超过1GB ,实际上有8个)。 我创build它们后,我必须创build将使用这些文件的过程。 该脚本如下所示: # This is more complex function, but it basically does this: def use_file(): subprocess.call(['C:\\use_file', 'C:\\foo.txt']); f = open( 'C:\\foo.txt', 'wb') for i in 10000: f.write( one_MB_chunk) f.flush() os.fsync( f.fileno()) f.close() time.sleep(5) # With this line added it just works fine t = threading.Thread( target=use_file) t.start() 但是应用程序use_file行为就像foo.txt是空的。 有一些奇怪的事情在进行: 如果我在控制台执行C:\use_file C:\foo.txt (脚本完成后),我会得到正确的结果 如果我在另一个python控制台手动执行use_file() […]

在Linux C ++应用程序中寻找和读取大文件

我正在使用G ++中的标准ftell和fseek选项运行到整数溢出,但我想我错了,因为似乎ftell64和fseek64不可用。 我一直在寻找和许多网站似乎引用使用lseek与off64_t数据types,但我还没有find任何引用的东西等于fseek的例子。 目前我正在阅读的文件是16GB + CSV文件,预计至less会翻一番。 没有任何外部库,与fseek / ftell对实现类似结构最直接的方法是什么? 我现在的应用程序正在使用4.x的标准GCC / G ++库。

32位Windows和2GB文件大小限制(C与fseek和ftell)

我试图将一个小型的数据分析程序从一个64位的UNIX移植到一个32位的Windows XP系统(不要问:))。 但是现在我遇到了2GB文件大小限制的问题(在这个平台上不是64位)。 我已经search了这个网站和其他可能的解决scheme,但找不到任何可以直接翻译我的问题。 问题在于使用fseek和ftell。 有谁知道以下两个函数的修改,使他们在32位Windows XP上工作的文件大于2GB(实际订购100GB)。 nsamples的返回types是一个64位整数(可能是int64_t)是非常重要的。 long nsamples(char* filename) { FILE *fp; long n; /* Open file */ fp = fopen(filename, "rb"); /* Find end of file */ fseek(fp, 0L, SEEK_END); /* Get number of samples */ n = ftell(fp) / sizeof(short); /* Close file */ fclose(fp); /* Return number of samples in […]

在窗口_fseeki64不寻求SEEK_END正确的大文件

我已经将问题简化为下面的基本function,它应该简单地打印文件中的字节数。 当我为83886080字节(80 MB)的文件执行它时,它会输出正确的数字。 但是,对于4815060992字节(4.48 GB)的文件,它将打印520093696,这是低的方法。 这似乎与SEEK_END选项有关,因为如果我手动将指针设置为4815060992字节(例如_fseeki64(fp, (__int64)4815060992, SEEK_SET) _ftelli64确实返回了正确的位置,所以解决方法是获得适当的文件大小而不使用SEEK_END ,这是如何完成的? 该代码在一个32位的Windows系统(因此__int64 , _iseeki64和_ftelli64 )与MinGW编译。 总之:我在这里做错了什么? void printbytes(char* filename) { FILE *fp; __int64 n; int result; /* Open file */ fp = fopen(filename, "rb"); if (fp == NULL) { perror("Error: could not open file!\n"); return -1; } /* Find end of file */ result = _fseeki64(fp, […]

为什么我的Perl程序不能在Windows上创build超过4 GB的文件?

为什么使用打印输出到文件时,文件大小限制在4 GB? 我期望与stream输出应该可以生成任意大小的文件。 更新 : ijw和查斯。 欧文斯是正确的。 我以为F:驱动器是NTFS格式化的,但实际上它使用了FAT32文件系统。 我尝试了另一个驱动器,我可以生成一个20 GB的文本文件。 在这种情况下没有限制。 向所有人道歉。 详细信息:在研究堆栈溢出问题时,我需要测量使用Perl读取非常大的文本文件的性能。 为了testing阅读我需要一个大的文本文件,我写了一个小的Perl脚本来生成文本文件,并遇到了意想不到的问题。 输出文件增长到4 GB。 根据Windows资源pipe理器,一次运行该脚本的大小为4294967269个字节(磁盘上为4294967296个字节)。 脚本继续,但文件不再增长。 基本它只是一些: print NUMBERS_OUTFILE $line; $ line是最后一个带有“\ n”的长string。 线的长度可以configuration,对于这个问题并不重要。 例如250个字符或34000个字符。 NUMBERS_OUTFILE是一个文件句柄,创build时使用: open ( NUMBERS_OUTFILE,">F:\temp2\out1.txt") 驱动器F:是NTFS格式化的,与具有操作系统的磁盘位于单独的物理硬盘上。 这是什么原因,有没有解决办法? 完整的Perl脚本和BAT驱动程序脚本 (用pre标签格式化的HTML)。 如果设置了两个环境variablesMBSIZE和OUTFILE,那么Perl脚本应该能够在Windows之外的其他平台上运行。 平台:来自ActiveState的Perl 5.10.0; 32位; build立1004. Windows XP x64 SP2,8 GB RAM,500 GB绿色鱼子酱硬盘。 perl -V说: Summary of my perl5 (revision 5 […]