XhProf是Facebook出品的一個PHP性能監控工具,只包含基本的界面和圖形來分析數據。後來Paul Reinheimer在此基礎上開發了Xhgui,提供了更好的界面和功能,其主頁在https://github.com/perftools/xhgui,其實步驟說的很詳細,可是在CentOS7上安裝並不容易,由於不少程序須要編譯,在這裏記錄一下php
安裝
yum install mongodb-org
systemctl enable mongod
systemctl start mongod
1六、mcrypt
cd ~/download
wget http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar xvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
make install
cd ~/download
wget http://museum.php.net/php5/php-5.4.16.tar.gz
cd php-5.4.16/ext/mcrypt/
phpize
./configure
make
make install
vim /etc/php.ini
最後增長
extension=mcrypt.so
用php -m驗證
1七、Dom
cd ~/download/php-5.4.16/ext/dom/
yum install libxml2-devel
phpize
./configure
make
make install
vim /etc/php.ini
最後增長
extension=dom.so
用php -m驗證
1九、配置nginx,將xhgui放在88端口
vim /usr/local/nginx/conf/nginx.conf
增長
<?php
$n=5000;
$a = createArray($n);
$a = sortArray($a);
echoArray($a);
function createArray($n){
$a;
for($i=0;$i<$n;$i++){
$a[$i]=rand(0,$n);
}
return $a;
}
function echoArray($a){
for($i=0;$i<count($a);$i++){
echo $a[$i]." ";
}
}
function sortArray($a){
for($i=0;$i<count($a);$i++){
for($j=$i+1;$j<count($a);$j++){
if($a[$i]<$a[$j]){
$tmp = $a[$i];
$a[$i]=$a[$j];
$a[$j]=$tmp;
}
}
}
return $a;}其實很簡單,就是一個建立數組,進行排序的過程,能夠在瀏覽器中運行http://172.16.9.145/test.php,理論上就能夠在http://172.16.9.145:88看到結果了,可是,刷新88端口,通常是看不到結果的,這裏是一個採樣問題,xhgui是按照1%採樣的,因此對於開發來講,須要100%採樣,須要修改vim /data/xhgui/config/config.php'profiler.enable' => function() {//return rand(0,100) == 42return rand(0, 100) > 0 ;},黑體子是修改內容,這就是100%的採樣,再運行http://172.16.9.145/test.php,就能夠在http://172.16.9.145:88上看到結果了,2三、其餘能夠看到採樣的結果,包括程序的等待時間(wt)、cpu時間、內存等等信息,還能夠經過view Graphy看到函數調用的過程,顏色越深,說明運行越慢,須要處理。xhgui使用mongodb保存性能數據,數據庫鏈接信息保存在xhgui/config/config.php中,這意味着能夠將性能信息保存到遠程機器,還能夠將多臺機器的性能數據放在一塊兒,咱們能夠看一下性能數據的結構,以下mongo>use xhprof>db.results.find().limit(1).pretty();查看一下鍵meta的信息,以下"meta" : {"url" : "/test.php","SERVER" : {"USER" : "apache","HOME" : "/usr/share/httpd","FCGI_ROLE" : "RESPONDER","SCRIPT_FILENAME" : "/data/html/test.php","QUERY_STRING" : "","REQUEST_METHOD" : "GET","CONTENT_TYPE" : "","CONTENT_LENGTH" : "","SCRIPT_NAME" : "/test.php","REQUEST_URI" : "/test.php","DOCUMENT_URI" : "/test.php","DOCUMENT_ROOT" : "/data/html","SERVER_PROTOCOL" : "HTTP/1.1","REQUEST_SCHEME" : "http","GATEWAY_INTERFACE" : "CGI/1.1","SERVER_SOFTWARE" : "nginx/1.9.9","REMOTE_ADDR" : "172.16.9.255","REMOTE_PORT" : "62433","SERVER_ADDR" : "172.16.9.145","SERVER_PORT" : "80","SERVER_NAME" : "localhost","REDIRECT_STATUS" : "200","PHP_VALUE" : "auto_prepend_file=/data/xhgui/external/header.php","HTTP_HOST" : "172.16.9.145","HTTP_CONNECTION" : "keep-alive","HTTP_CACHE_CONTROL" : "max-age=0","HTTP_ACCEPT" : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","HTTP_UPGRADE_INSECURE_REQUESTS" : "1","HTTP_USER_AGENT" : "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36","HTTP_ACCEPT_ENCODING" : "gzip, deflate, sdch","HTTP_ACCEPT_LANGUAGE" : "zh-CN,zh;q=0.8","HTTP_COOKIE" : "slim_session=1450653227%7CBxhI8%2BKm%2B47xsnTB%2BOZVAv9qjPHQYC1oCIcfWhIblGI%3D%7C3a5b1cf4f47a77302d253b577949544f4ffe627b","PHP_SELF" : "/test.php","REQUEST_TIME_FLOAT" : 1450652599.176433,"REQUEST_TIME" : NumberLong(1450652599)},能夠經過SERVER_*, HTTP_*看到服務器信息,能夠用來區分不一樣的主機,因此能夠經過這些信息來過濾,能夠支持多個主機