2010-12-20 37 views
1

Greetz研究員!記錄沒有時間浪費

我正在尋找一種方法來記錄CLI腳本的操作而不會浪費時間。我做了一些基準測試,我發現在每次操作之後,腳本的速度將會降低近2倍,並且通過將操作添加到日誌文件中,速度會降低17倍。

那麼,任何人都有一個解決方案?

+1

不是。做東西需要時間......但通常並不重要,因爲這是一個微秒問題。你到底在做什麼?很難相信'echo'語句可能會嚴重降低腳本的速度 – 2010-12-20 12:02:44

+1

@Pekka - 懷疑它是在終端上顯示回顯內容的過程等。這會放慢速度。 – 2010-12-20 12:05:17

+0

你如何試圖保存到日誌文件?日誌文件是否在本地存儲? (不是遠程或SAN或奇怪的東西。) – 2010-12-20 12:06:51

回答

0

如果您正在使用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不(輸出第一)

0

記錄到一個文件應該比回顯到屏幕快得多(這是顯示文本最有可能的限制)。因此,您可以簡單地將調試寫入文件並(如果需要的話)「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; 
} 
+0

這就是我做了這需要很多額外的時間。 – seriousdev 2010-12-20 12:36:12

+0

@sexyprout - 如果你正在進行大量的日誌記錄,那麼在開始時打開文件並在最後關閉文件是有意義的,而不是上面的。也就是說,這應該比輸出到屏幕還要快很多。日誌文件在本地文件系統上嗎? – 2010-12-20 12:50:06

0

登錄到一個TCP資源/插座。並在網絡上添加一個監聽器。所以沒有I/O。