2011-08-01 41 views
0

我想簡介&優化我的PHP腳本文件I/O。所以起初有必要計算一個腳本及其所有內容中發生多少I/O。我怎麼做,而不修改腳本?有沒有可能以某種方式重載與文件相關的功能並向它們添加計數?或者至少是一個擴展?如何計算PHP腳本文件的讀取和寫入而不修改腳本?

+0

使用'vmstat'和'iostat'來查找你是cpu,mem還是i/o bound。使用XDebug來分析您的PHP應用程序。 – Gordon

+0

是不是所有關於CPU的XDebug?我不記得任何I/O相關的設置或輸出... –

+0

不,它不是。它是一個應用程序分析器和調試工具,它可以收集本地函數調用。除此之外,你還可以看看'strace',儘管這個水平很低。 – Gordon

回答

1

我想你會得到的最好的東西是找出有多少(和哪些)文件已被包含(這也是某種文件I/O)。

http://php.net/manual/en/function.get-included-files.php

我不認爲有一個內置的「多少文件I/O沒FREAD/FWRITE做」的功能,它會讓你推測這一切,無需修改腳本或服務器。

+0

謝謝,我知道這個功能。是的,它很方便。但我想要統計所有file_exists,fstat,filemtime,fread,fwrite,file_get/put_contents等。 –

1

使用vmstatiostat來查找您是cpu,mem還是i/o界限。您還可以使用strace來記錄系統調用。使用XDebugxhprof來分析您的PHP應用程序。

+0

嗯我不知道如何在Apache內響應HTTP請求運行PHP內部strace ... –

0

因此,首先需要計算一個 腳本及其所有內容中發生的I/O數量。

不需要計算腳本及其包含內發生多少I/O。

只需要幾次隨機暫停它,並且每次檢查調用堆棧。如果一個I/O所花的時間是另一個I/O的兩倍,那麼在每次暫停時都可以看到它。無論它在腳本中還是在包含中都沒關係。任何花費足夠時間進行優化的東西都會出現一次以上。