標籤:
本來以為配置這麼一個工具不會費很大的力氣,後面發現完全不是。
一、小插曲
早上顯示電腦不能顯示虛擬目錄下的所有網域名稱,但是能開啟localhost,資料庫連接也不行了。這個問題糾纏了我一個上午。對了還有個問題是IME不能顯示了,後面下載了個百度衛士修複了下,早上真是諸事不順。
1)一開始以為是firefox瀏覽器Fiddler外掛程式的問題,然後關閉firefox中的外掛程式,關閉Fiddler,發現還是不能開啟網站。
2)以為是瀏覽器的問題,馬上開啟另外幾個瀏覽器,在chrome瀏覽器中開啟,依舊不能開啟,顯示下面的錯誤,IE中也不行,這就奇怪了。然後根據錯誤碼在百度和google上面搜尋,沒查到什麼有用的。
3)後面經同事提醒可以看看apache的日誌,看看有沒有蛛絲馬跡。但奇怪的是log都沒有發生變化。
4)開啟防火牆,發現已經全部都關閉,後面開啟windows日誌,也沒發現有啥問題。
5)最後,再分析了下問題,發現其實是不能訪問127.0.0.1這個網域名稱導致的。然後再搜尋找到一條指令,試一下,還真行了。
6)一個莫名奇妙的問題出現在面前,做的第一件事情就是開啟搜尋引擎,然後描述問題;不過很多時候,一開始描述的並不是問題的核心所在,只能在不斷嘗試的時候,把問題分析的越來越清晰。
下午安裝xhprof也是一個差不多的分析問題的過程,我的php版本是5.5.17的。
二、windows環境
1)首先就是下載xhprof擴充包,搜尋索引鍵“xhprof”,馬上就找到了php官網上的下載連結,然並卵,這個linux環境的。
2)馬上搜尋起來,還是順利的找到了,而且版本還有多種,windows xhprof,樸素的頁面我喜歡。
三、php.ini
1)把下載到的php_xhprof.dll,放到php的ext目錄下面。然後開啟擴充
2)最後配置記錄檔
3)在phpinfo中查看是否出現了這個擴充,很好,已經出現了。
四、demo
1)在github上面下載到了xhprof的php相關代碼案例。目錄結構如下,等一下會用到的是examples,xhprof_html與xhprof_lib。
2)現在examples檔案夾中開啟example.php檔案,出現了下面的一串資訊。
3)然後開啟xhprof_html,出現了下面的幾個日誌,這個日誌存放在php.ini設定的xhprof.output_dir目錄中。
4)點擊某個日誌,出現了下面的表格,裡面代表的內容可以在網上查到。
5)點擊view full callgraph,這個其實是我最想看到的效果,滿心期待的,可是出現了一個無情的錯誤,囧。
6)在網上搜尋到一篇文章,裡面講到是因為沒有安裝Graphviz,這個軟體導致的,馬上就去下載。
7)以為下下來就可以了,萬萬沒想到,一如既往的報錯。在那篇文章中說到給config.php檔案配置個目錄,我在案例代碼中看了半天都沒找到這個檔案,以為在忽悠我,後來我在那篇部落格中下載了demo代碼,果然發現了這個檔案,不過即使把這個檔案放到我這邊,也沒啥鳥用。又開始搜尋,搜到篇洋人寫的文章,也提到了配置。
8)最後在Stack Overflow這個網站上面發現了靈感,這個網站還真是有用。有個洋人說道:
9)還有這麼個檔案,馬上找到這個函數xhprof_generate_image_by_dot
$descriptorspec = array( // stdin is a pipe that the child will read from 0 => array("pipe", "r"), // stdout is a pipe that the child will write to 1 => array("pipe", "w"), // stderr is a pipe that the child will write to 2 => array("pipe", "w") ); $cmd = " dot -T".$type; $process = proc_open( $cmd, $descriptorspec, $pipes, sys_get_temp_dir(), array( ‘PATH‘ => getenv( ‘PATH‘ ) ) );
10)發現讀取了PATH這個環境變數,原來是要配置下這個環境變數的,我當時其實是配置過一次的,不過不是配的系統變數,囧,將Graphviz2.38\bin的絕對路徑寫上去。
11)期待已久的圖片終於出現了。
如果想要應用到實際項目中,肯定還有很多地方需要修改。
demo下載:
http://download.csdn.net/detail/loneleaf1/8958017
參考資料:
http://blog.snsgou.com/post-816.html 安裝PHP效能測試工具 xhprof_0.10.3_php53_vc9.dll
http://stackoverflow.com/questions/2930254/linux-dot-utility-with-xhprof linux dot utility (with xhprof)
http://www.lornajane.net/posts/2012/generating-callgraph-with-xhgui Generating Callgraph with XHGUI
windows配置xhprof,PHP效能分析工具