日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

XDebug分析php代码性能

發布時間:2025/4/9 php 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XDebug分析php代码性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XDebug是一個開放源代碼的PHP程序調試器(即一個Debug工具),可以用來跟蹤,調試和分析PHP程序的運行狀況。是一個C語言擴展包(Windows下擴展名為.dll)。?
XDebug 下載地址:
http://xdebug.org/download.php

WinCacheGrind 下載地址:
http://sourceforge.net/projects/wincachegrind/

1. 下載?
以Windows環境下php5.2為例。去官方下載合適的XDebug版本,看下圖,應該在前兩個鏈接選擇一個下載,這要取決于你的PHP5.2是否為非線程安全還是線程安全版,我這里是后者,因此選擇紅框標定的鏈接下載?
?
下載后是一個dll文件,建議修改為更友好的文件名:php_xdebug.dll.?

2. 配置?
復制php_xdebug.dll到$php_installed_dir/ext目錄下,修改php.ini,可以先設置如下選項:?

Php.ini代碼?
  • [Xdebug]??
  • extension=php_xdebug.dll??
  • xdebug.profiler_enable=on??
  • xdebug.trace_output_dir="d:\temp\xdebug"??
  • xdebug.profiler_output_dir="d:\temp\xdebug"???

  • 注:output_dir需要手工事先建好,否則不會生成profiler數據到該目錄。?

    3. 測試安裝成功?
    重新啟動apache, 運行<?php phpinfo()?>,看到如下選項表明安裝成功?
    ?

    4. 開始調試?
    1). Test Case1?

    Php代碼?
  • <?php??
  • require_once('empty.php');??
  • ?>??

  • 運行結果?


    xdebug的輸出文件格式(cachegrind.out)?


    xdebug的輸出文件格式(cachegrind.out)

    xdebug的性能測試輸出文件名是可以配置的。
    默認是 xdebug.profiler_output_name = cachegrind.out.%p
    那個%p是服務器的pid,會輸出“cachegrind.out.1408”之類的文件。
    可能這樣不太方便測試很多文件的網站。另外對于單一入口的文件名都是一樣的.
    網上看到的中文文章里面都沒有關于這個參數的說明。
    ?

    ?

    ????
    %c當前工作目錄的crc32校驗值trace.%ctrace.1258863198.xt
    %p當前服務器進程的pidtrace.%ptrace.5174.xt
    %r隨機數trace.%rtrace.072db0.xt
    %s腳本文件名(注)cachegrind.out.%scachegrind.out._home_httpd_html_test_xdebug_test_php
    %tUnix時間戳(秒)trace.%ttrace.1179434742.xt
    %uUnix時間戳(微秒)trace.%utrace.1179434749_642382.xt
    %H$_SERVER['HTTP_HOST']trace.%Htrace.kossu.xt
    %R$_SERVER['REQUEST_URI']trace.%Rtrace._test_xdebug_test_php_var=1_var2=2.xt
    %Ssession_id (來自$_COOKIE 如果設置了的話)trace.%Strace.c70c1ec2375af58f74b390bbdd2a679d.xt
    %%%字符trace.%%trace.%.xt
    注 此項不適用于trace file的文件名

    從上表可以找到一些適合你的參數。

    比如,我想針對每個文件生成一個輸出文件。

    那么我可以用:

    xdebug.profiler_output_name = cachegrind.out.%s

    多個域名的話,也可以組合使用

    xdebug.profiler_output_name = cachegrind.out.%H.%u.%s

    =============================================================

    ?

    使用Xdebug調試和優化PHP程序系列教程之Xdebug配置,根據Xdebug的官方文檔來詳細解釋Xdebug的參數配置。

    Xdebug配置

    第一部分:安裝
    預編譯模塊
    安裝預編譯模塊是很容易的。只需要將它們放到一個目錄中,并將下面的內容添加到php.ini中:(不要忘記更改路徑和文件名為你自己的值,并確信你使用的是完整路)
    zend_extension_ts = “c:/php/modules/php_xdebug.dll”

    第二部分:基本特征:
    相關參數設置
    xdebug.default_enable
    類型:布爾型 默認值:On
    如果這項設置為On,堆棧跟蹤將被默認的顯示在錯誤事件中。你可以通過在代碼中使用xdebug_disable()來禁止堆疊跟蹤的顯示。因為這是xdebug基本功能之一,將這項參數設置為On是比較明智的。

    xdebug.max_nesting_level
    類型:整型 默認值:100
    The value of this setting is the maximum level of nested functions that are allowed before the script will be aborted.
    限制無限遞歸的訪問深度。這項參數設置的值是腳本失敗前所允許的嵌套程序的最大訪問深度。

    第三部分:堆棧跟蹤:
    相關參數設置
    xdebug.dump_globals
    類型:布爾型 默認值:1
    限制是否顯示被xdebug.dump.*設置定義的超全局變量的值
    例 如,xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT 將打印 PHP 超全局變量 $_SERVER['REQUEST_METHOD']、$_SERVER['REQUEST_URI'] 和 $_SERVER['HTTP_USER_AGENT']。

    xdebug.dump_once
    類型:布爾型 默認值:1
    限制是否超全局變量的值應該轉儲在所有出錯環境(設置為Off時)或僅僅在開始的地方(設置為On時)

    xdebug.dump_undefined
    類型:布爾型 默認值:0
    如果你想從超全局變量中轉儲未定義的值,你應該把這個參數設置成On,否則就設置成Off

    xdebug.show_exception_trace
    類型:整型 默認值:0
    當這個參數被設置為1時,即使捕捉到異常,xdebug仍將強制執行異常跟蹤當一個異常出現時。

    xdebug.show_local_vars
    類型:整型 默認值:0
    當這個參數被設置為不等于0時,xdebug在錯環境中所產生的堆棧轉儲還將顯示所有局部變量,包括尚未初始化的變量在最上面。要注意的是這將產生大量的信息,也因此默認情況下是關閉的。

    第四部分:分析PHP腳本
    相關參數設置
    xdebug.profiler_append
    類型:整型 默認值:0
    當這個參數被設置為1時,文件將不會被追加當一個新的需求到一個相同的文件時(依靠xdebug.profiler_output_name的設置)。相反的設置的話,文件將被附加成一個新文件。

    xdebug.profiler_enable
    類型:整型 默認值:0
    開放xdebug文件的權限,就是在文件輸出目錄中創建文件。那些文件可以通過KCacheGrind來閱讀來展現你的數據。這個設置不能通過在你的腳本中調用ini_set()來設置。

    xdebug.profiler_output_dir
    類型:字符串 默認值:/tmp
    這個文件是profiler文件輸出寫入的,確信PHP用戶對這個目錄有寫入的權限。這個設置不能通過在你的腳本中調用ini_set()來設置。

    xdebug.profiler_output_name
    類型:字符串 默認值:cachegrind.out%p
    這個設置決定了轉儲跟蹤寫入的文件的名稱。

    第五部分:遠程Debug
    相關參數設置
    xdebug.remote_autostart
    類型:布爾型 默認值:0
    一般來說,你需要使用明確的HTTP GET/POST變量來開啟遠程debug。而當這個參數設置為On,xdebug將經常試圖去開啟一個遠程debug session并試圖去連接客戶端,即使GET/POST/COOKIE變量不是當前的。

    xdebug.remote_enable
    類型:布爾型 默認值:0
    這個開關控制xdebug是否應該試著去連接一個按照xdebug.remote_host和xdebug.remote_port來設置監聽主機和端口的debug客戶端。

    xdebug.remote_host
    類型:字符串 默認值:localhost
    選擇debug客戶端正在運行的主機,你不僅可以使用主機名還可以使用IP地址

    xdebug.remote_port
    類型:整型 默認值:9000
    這個端口是xdebug試著去連接遠程主機的。9000是一般客戶端和被綁定的debug客戶端默認的端口。許多客戶端都使用這個端口數字,最好不要去修改這個設置。

    注意:所有以上參數修改后,要重啟Apache才能生效!

    =======================================================

    轉載于:https://www.cnblogs.com/gaoqin31/p/5889805.html

    總結

    以上是生活随笔為你收集整理的XDebug分析php代码性能的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。