Greetz研究員!記錄沒有時間浪費
我正在尋找一種方法來記錄CLI腳本的操作而不會浪費時間。我做了一些基準測試,我發現在每次操作之後,腳本的速度將會降低近2倍,並且通過將操作添加到日誌文件中,速度會降低17倍。
那麼,任何人都有一個解決方案?
Greetz研究員!記錄沒有時間浪費
我正在尋找一種方法來記錄CLI腳本的操作而不會浪費時間。我做了一些基準測試,我發現在每次操作之後,腳本的速度將會降低近2倍,並且通過將操作添加到日誌文件中,速度會降低17倍。
那麼,任何人都有一個解決方案?
如果您正在使用CLI,我想你可以用這個測試:
YOUR_SCRIPT.php > /tmp/log.txt &
內YOUR_SCRIPT.php
<?
/* some action */
echo date('r').some_action_1()."\n"; <-- this is bad # REMARK 1
echo date('r').some_action_2()."\n";
echo date('r'), some_action_1(), "\n"; <-- this is nice # REMARK 2
echo date('r'), some_action_2(), "\n";
?>
和監控使用
tail -f /tmp/log.txt
原因REMARK 1
慢是因爲函數執行第一,而REMAKR 2
不(輸出第一)
記錄到一個文件應該比回顯到屏幕快得多(這是顯示文本最有可能的限制)。因此,您可以簡單地將調試寫入文件並(如果需要的話)「tail -f
」文件來查看實時調試。 (我假設你在Linux/Unix上運行,等等)
作爲一個建議:
function logDebugToFile($string) {
// Set defaults...
$filename = 'INSERT REQUIRED PATH/FILENAME HERE.log';
$ourFP = fopen($filename, 'a+');
if (is_resource($ourFP)) {
fwrite($ourFP, $string."\n");
fclose($ourFP);
return true;
}
return false;
}
這就是我做了這需要很多額外的時間。 – seriousdev 2010-12-20 12:36:12
@sexyprout - 如果你正在進行大量的日誌記錄,那麼在開始時打開文件並在最後關閉文件是有意義的,而不是上面的。也就是說,這應該比輸出到屏幕還要快很多。日誌文件在本地文件系統上嗎? – 2010-12-20 12:50:06
登錄到一個TCP資源/插座。並在網絡上添加一個監聽器。所以沒有I/O。
不是。做東西需要時間......但通常並不重要,因爲這是一個微秒問題。你到底在做什麼?很難相信'echo'語句可能會嚴重降低腳本的速度 – 2010-12-20 12:02:44
@Pekka - 懷疑它是在終端上顯示回顯內容的過程等。這會放慢速度。 – 2010-12-20 12:05:17
你如何試圖保存到日誌文件?日誌文件是否在本地存儲? (不是遠程或SAN或奇怪的東西。) – 2010-12-20 12:06:51