3

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

PHP中是否有与/dev/null等价的东西?我发现与写入临时数据最接近的等价物是php://tempphp://memory但是这两个 I/O 流存储垃圾数据,我希望每条数据都以“假”方式写入。

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

有没有等价物?

4

2 回答 2

1

// 对于它的价值,这适用于 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);
}
于 2014-10-08T12:50:50.523 回答
0

我认为你最好的选择是一个streamWrapper,它可以用 microtime 分析你的输出,然后你可以stream_wrapper_register。手册中的示例非常好。

如果您的代码不是那么复杂,或者您摔倒了,这将是矫枉过正,您可以使用ob_start回调处理程序

希望这可以帮助。

于 2013-08-13T12:19:34.347 回答