用于生成具有给定名称和大小的随机数据的文件的PHP脚本?

sto*_*ist 10 php random file

有谁知道吗?我需要测试一些上传/下载脚本,并需要生成一些非常大的文件.我打算将测试实用程序与我的调试脚本集成.

Mar*_*aio 8

首先,您可以尝试这样的事情:

function generate_file($file_name, $size_in_bytes)
{
   $data = str_repeat(rand(0,9), $size_in_bytes);
   file_put_contents($file_name, $data); //writes $data in a file   
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个填充了随机数字(0-9)的文件.

  • @MatW:事实并非如此.但它在1个字节中存储单个*字符*(由`str_repeat()`转换). (3认同)

mgu*_*utt 7

generate_file()来自“Marco Demaio”的内存不友好,所以我创建了file_rand()

function file_rand($filename, $filesize) {
    if ($h = fopen($filename, 'w')) {
        if ($filesize > 1024) {
            for ($i = 0; $i < floor($filesize / 1024); $i++) {
                fwrite($h, bin2hex(openssl_random_pseudo_bytes(511)) . PHP_EOL);
            }
            $filesize = $filesize - (1024 * $i);
        }
        $mod = $filesize % 2;
        fwrite($h, bin2hex(openssl_random_pseudo_bytes(($filesize - $mod) / 2)));
        if ($mod) {
            fwrite($h, substr(uniqid(), 0, 1));
        }
        fclose($h);
        umask(0000);
        chmod($filename, 0644);
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,每 1024 个字节添加换行符,以避免限制为 1024-9999 个字节的函数出现问题。例如 fgets() 与 <= PHP 4.3。并且它可以更轻松地使用文本编辑器打开文件,该编辑器具有与超长行相同的问题。


Mat*_*hew 6

你真的需要文件大小的变化,你需要PHP脚本吗?我只是通过命令行创建不同大小的测试文件,并在我的单元测试中使用它们.除非文件大小本身可能会导致错误,否则你似乎在这里过度工程......

在Windows中创建文件;

fsutil file createnew d:\filepath\filename.txt 1048576
Run Code Online (Sandbox Code Playgroud)

在Linux中;

dd if=/dev/zero of=filepath/filename.txt bs=10000000 count=1
Run Code Online (Sandbox Code Playgroud)

如果是文件源(在这种情况下没有),是输出文件,BS是最后的文件大小,数量定义要多少块复制.

  • `fsutil file createnew` 创建一个 EMPTY FILE,问题是关于创建一个带有随机数据的文件。 (2认同)