相当于/dev/null,用于写入垃圾测试数据


Equivalent of /dev/null for writing garbage test data?

我需要执行一系列测试,为我设计的一组函数选择最快的代码分支。由于此函数输出一些文本/HTML内容,我希望在不向浏览器填充垃圾数据的情况下测量速度。

在PHP中有相当于/dev/null的代码吗?我发现最接近于写入临时数据的是php://tempphp://memory,但这两个I/O流存储垃圾数据,我希望每一条数据都以"伪造"的方式写入。

我总是可以在变量ala $tmp .= <function return value goes here>中写入所有垃圾数据,但我相信必须有一种更优雅或更好的方法来实现这一点,而不必求助于shell_exec()exec()proc_open()等函数和类似的方法(我要测试最终代码的生产服务器将没有任何这些命令)。

有对等的吗?

//值得一提的是,它可以在CentOS 6.5 php 5.3.3上运行。

$fname = "/dev/null";
if(file_exists($fname))   print "*** /dev/null exists ***'n";
if (is_readable($fname))  print "*** /dev/null readable ***'n";
if (is_writable($fname))  print "*** /dev/null writable ***'n";
if (($fileDesc = fopen($fname, "r"))==TRUE){
    print "*** I opened /dev/null for reading ***'n";
    $x = fgetc($fileDesc);
    fclose($fileDesc);
}
if (($fileDesc = fopen($fname, "w"))==TRUE)
{
    print "*** I opened /dev/null for writing ***'n";
    $x = fwrite($fileDesc,'X');
    fclose($fileDesc);
}
if (($fileDesc = fopen($fname, "w+"))==TRUE) {
    print "*** I opened /dev/null for append ***'n";
    $x = fwrite($fileDesc,'X');
    fclose($fileDesc);
}

我认为你最好的选择是一个streamWrapper,它可以在写入时用微时间对你的输出进行评测,然后你就可以使用stream_wrapper_register了。手册中的例子很好。

如果你的代码没有那么复杂,或者你认为这太过分了,你可以使用ob_start回调处理程序

希望这能有所帮助。