Php 生成大型虚拟文件的算法
是否有人编写了一个快速算法,用PHP生成一个大的虚拟文件,比如500MB-2GB?如果你根本不关心文件内容,你可以在任何位置写一些东西:Php 生成大型虚拟文件的算法,php,algorithm,file,Php,Algorithm,File,是否有人编写了一个快速算法,用PHP生成一个大的虚拟文件,比如500MB-2GB?如果你根本不关心文件内容,你可以在任何位置写一些东西: $f = fopen('largefile', 'wb'); fseek($f, 2 * 1000 * 1000 * 1000, SEEK_SET); fwrite($f, 'after 2 GB'); fclose($f); 如果操作系统和文件系统支持,文件将非常大,但实际占用的磁盘空间不会超过两个字节 /* far too long to file c
$f = fopen('largefile', 'wb');
fseek($f, 2 * 1000 * 1000 * 1000, SEEK_SET);
fwrite($f, 'after 2 GB');
fclose($f);
如果操作系统和文件系统支持,文件将非常大,但实际占用的磁盘空间不会超过两个字节
/* far too long to file creation , do not use especially not
$f = fopen('largefile', 'wb');
fseek($f, 2 * 1000 * 1000 * 1000, SEEK_SET);
fwrite($f, 'after 2 GB');
fclose($f);*/
^^最好的功能是使用0创建4GB文件^^
FUNCTION CreatFileDummy($file_name,$size) {
// 32bits 4 294 967 296 bytes MAX Size
$f = fopen($file_name, 'wb');
if($size >= 1000000000) {
$z = ($size / 1000000000);
if (is_float($z)) {
$z = round($z,0);
fseek($f, ( $size - ($z * 1000000000) -1 ), SEEK_END);
fwrite($f, "\0");
}
while(--$z > -1) {
fseek($f, 999999999, SEEK_END);
fwrite($f, "\0");
}
}
else {
fseek($f, $size - 1, SEEK_END);
fwrite($f, "\0");
}
fclose($f);
Return true;
}
在Php 32bit 4 294 967 296中测试它^Max:
createFileDummy('mydummyfile.iso',4294967296)
您想要写入、读取和创建虚拟文件,我的代码在这里^ ^:
dd if=/dev/zero of=dummy bs=1024 count=500000
只需添加一个系统命令调用,瞧,您就有了一个生成一个大型虚拟文件的php脚本;-)@KerrekSB这不是“快速”算法:P betterdd if=/dev/zero of=dummy bs=1 count=1 seek=500000
@Herbert:这种方法很容易适用于任何支持fopen
/fread
/fwrite
:-)是的,我知道如何在linux中实现它,但限制是我不能使用ddDope函数,但从技术上讲,那不是2GB。@Mob,嗯?这将写入2GB+10字节。如果您想准确地写入2GB,可以调用ftruncate
而不是fwrite
,或者写入2G-1字节并调用fwrite('\0')
。在UNIX/Linux上,这将创建一个10字节的文件,其中有一个2GB的引导孔。这可能是您想要的,也可能不是您想要的。@Rich Homolka Define hole。这是一个有20亿空字节+10个额外字节的文件,不是吗?我绝对不同意你的说法,它只取决于操作系统。正如我在回答中所写的,文件系统还必须支持稀疏文件。例如,对于FAT32驱动器上的Linux 3.3,此代码将创建一个占用2GB磁盘空间的文件。