生成大型虚拟文件的算法

时间:2011-11-18 14:32:13

标签: php algorithm file

是否有人写过快速算法,在PHP中生成 LARGE 虚拟文件,比如500MB-2GB?

2 个答案:

答案 0 :(得分:12)

如果您根本不关心文件内容,只需seek到任何位置并写一些内容:

$f = fopen('largefile', 'wb');
fseek($f, 2 * 1000 * 1000 * 1000, SEEK_SET);
fwrite($f, 'after 2 GB');
fclose($f);

如果操作系统和文件系统支持sparse files,文件将非常大,但实际上不会占用超过几个字节的磁盘空间。

答案 1 :(得分:0)

 /* 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);*/

^^最好的功能是0s来创建一个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;
}

测试它^^ Max in Php 32bit 4 294 967 296:

CreatFileDummy( 'mydummyfile.iso',4294967296);

你想写,读和创建文件虚拟我的代码在这里^^:

https://github.com/Darksynx/php