2013-08-04 57 views
3

我需要執行一系列的測試來挑選我設計的一組函數的最快分支代碼。由於此功能輸出一些文本/ HTML內容,我想測量速度而不用瀏覽器填充垃圾數據。用於寫入垃圾測試數據的/ dev/null等價物?

PHP中是否存在與/ dev/null等效的內容?與我發現的寫入臨時數據最接近的是php://tempphp://memory,但是這兩個I/O流存儲垃圾數據,我希望每一塊數據都以'假'的方式寫入。

我總是可以寫的所有垃圾數據阿拉$tmp .= <function return value goes here>一個變量,但我敢肯定,必須有一個更優雅的或更好的方式來做到這一點WITHOUT訴諸功能,如shell_exec()exec()proc_open()和類似的方法(生產服務器我要測試最終的代碼將不會有任何這些命令)。

是否有等價物?

+1

使用輸出緩衝環繞代碼'ob_start()''ob_end_clean()' –

+2

如果你不想輸出,不輸出任何東西! – 2013-08-04 21:05:45

+2

如果您似乎想要輸出文件資源,爲什麼使用'/ dev/null'不可行。你的代碼如何輸出? – mario

回答

0

我認爲你最好的選擇是streamWrapper,它可以用microtime寫出你的輸出結果,然後你就可以stream_wrapper_register。手冊中的example非常好。

如果你的代碼並不複雜,或者您下跌,這將是矯枉過正,你可以只使用ob_start回調處理

希望這有助於。

0

//對於它的價值,這在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); 
}