国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 利用PHP擴展Xhprof分析項目性能實踐教程

利用PHP擴展Xhprof分析項目性能實踐教程

2019-09-08 11:37tangqingsong PHP教程

XHProf是Facebook開發的性能調試工具,能幫助直觀的統計顯示PHP程序執行中各方法函數調用次數和消耗時間,以方便我們排查性能瓶頸并進行調優。下面這篇文章主要給大家介紹了關于利用PHP擴展Xhprof分析項目性能實踐的相關資料,需

一、背景

項目即將上線,想通過一些工具來分析代碼的穩定性和效率,想起在上個團隊時使用過的xhprof擴展;因為換了新電腦,所以需要重新編譯此擴展,現將安裝與實際排查過程完整記錄下來,方便自己回顧和幫助更多的讀者。

XHProf 是 FaceBook 開發的一個函數級別的 PHP 分層分析器。

數據收集部分是一個基于 C 的 PHP 擴展,分析報告是一系列基于 PHP 的 HTML 導航頁面。

XHProf 能統計每個函數的調用次數、內存使用、CPU占用等多項重要的數據。

并且 XHProf 還能比較兩個統計樣本,或從多個數據樣本中匯總結果。

XHProf 是分析 PHP 程序執行效率的利器,能讓我們得到更底層的的分析數據。

下面話不多說了,來一起看看詳細的介紹吧

二、操作步驟

  • 安裝擴展
  • 配置擴展
  • 測試分析

三、安裝

xhprof擴展PHP并不自帶,需要筆者去單獨安裝它,安裝之后才能使用,筆者這里采用源碼安裝方式,安裝過程如下

3.1 下載源碼

xhprof在PHP的PECL官方上面已經比較老了,筆者的PHP版本為PHP7.1因此,需要在GitHub上下載xhprof上比較新的源碼,參考命令如下

git clone https://github.com/longxinH/xhprof

3.2 檢測環境

進入編譯的文件夾,參考命令

cd xhprof/extension/

現在筆者需要編譯一下源碼,在編譯之前可以使用phpze來探測PHP的環境,參考命令如下:

phpize

返回結果如下

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

3.3 編譯安裝

生成 Makefile,為下一步的編譯做準備

./configure

返回結果如下

creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
config.status: config.h is unchanged

開始編譯,并進行安裝

make && make install

返回結果如下

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/

從返回信息中可以看到已經安裝完成,并顯示了擴展文件存放的位置

四、配置

在編譯安裝源碼之后,筆者還需要對PHP的配置文件夾以及xhprof的進行一些簡單的配置,操作過程如下所示

4.1 找出配置文件位置

要修改PHP的配置首先需要知道配置文件在什么位置,這里可以通過PHP的命令來查看配置文件存放位置,參考命令如下:

php --ini

執行命令后,返回結果如下

Configuration File (php.ini) Path: /usr/local/etc/php/7.1
Loaded Configuration File:         /usr/local/etc/php/7.1/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.1/conf.d/ext-opcache.ini

在返回結果當中,可以看到多個配置文件的路徑,筆者所需要的是第二個文件php.ini

查看擴展目錄存放位置,參考命令如下

cat /usr/local/etc/php/7.1/php.ini | grep extension_dir

返回結果如下

extension_dir = "/usr/local/lib/php/pecl/20160303"
; extension_dir = "ext"
; Be sure to appropriately set the extension_dir directive.
;sqlite3.extension_dir =

4.2 修改配置

從返回的結果當中,可以看到擴展的存放目錄位置如下

/usr/local/lib/php/pecl/20160303

現在需要將剛才編譯好的xhprof擴展復制到該目錄當中,參考命令如下

cp /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/xhprof.so /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/

通過vim編輯器編輯配置文件,參考命令如下

vim /usr/local/etc/php/7.1/php.ini

在配置文件尾部增加xhprof的配置,以及自定義一個用來保存xhprof生成的源文件參考配置如下

[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/www/xhprof/save_output_dir 

4.3 重啟生效

保存好之后,筆者重啟php-fpm讓其配置生效,重啟命令可以通過brew命令來查看,參考命令如下:

brew info php@7.1

在命令執行后,返回的信息中可以看到如下信息

To have launchd start php@7.1 now and restart at login:
 brew services start php@7.1
Or, if you don't want/need a background service you can just run:
 php-fpm

因此筆者構造的重啟PHP-FPM命令如下:

brew services restart php@7.1

重啟完成后,返回結果如下

Stopping `php@7.1`... (might take a while)
==> Successfully stopped `php@7.1` (label: homebrew.mxcl.php@7.1)
==> Successfully started `php@7.1` (label: homebrew.mxcl.php@7.1)

4.4 驗證安裝

現在驗證xhprof擴展是否已經安裝完成,參考命令如下

php -m | grep xhprof

命令執行后,安裝擴展成功的返回結果將會顯示xhprof,如下圖所示

利用PHP擴展Xhprof分析項目性能實踐教程

五、測試

經過上面的操作筆者已經成功的安裝與配置,現在需要用PHP代碼來進行驗證xhprof的分析效果

5.1 創建虛擬主機

首先創建一個虛擬主機,讓用戶可以通過瀏覽器訪問所訪問,創建虛擬主機需要有一個根目錄,并編輯nginx配置文件,具體操作如下:

5.1.1 創建項目目錄

創建項目根目錄,參考命令如下

mkdir -p /Users/song/mycode/work/test

創建成功之后,筆者需要將之前git拉下來的部分代碼復制到項目根目錄當中,參考命令如下

cp -r xhprof/xhprof_html /Users/song/mycode/work/test/
cp -r xhprof/xhprof_lib /Users/song/mycode/work/test/

5.1.2 編輯配置文件

添加配置文件,參考命令

/usr/local/etc/nginx/nginx.conf

添加配置文件如下

 server {
  listen  80;
  server_name test.localhost;

  root /Users/song/mycode/work/test;
  index index.html index.htm index.php;
  
  location / {
   try_files $uri $uri/ /index.php?$query_string;
  }


  location ~ \.php$ {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include  fastcgi_params;
  }

 }

在/etc/hosts文件中增加入一行解析記錄,記錄內容如下:

127.0.0.1 test.localhost

5.2 新建測試代碼

在git倉庫的examples文件夾下,已經有了一份demo代碼,不過這份代碼的注釋都是英文,而且排版方式也不易筆者自己理解,因此筆者重新編輯了此文件,參考步驟如下命令

使用vim新建一個PHP文件

vim /Users/song/mycode/work/test/test.php

在文件中加入以下代碼

<?php

//加載所需文件
include_once "./xhprof_lib/utils/xhprof_lib.php";
include_once "./xhprof_lib/utils/xhprof_runs.php";

//隨意定義一個函數
function test($max)
{
 for ($idx = 0; $idx < $max; $idx++) {
  echo '';
 }
}

//定義測試方法
function a()
{
 test(rand(1000,5000));
}

//開始分析
xhprof_enable();

//需要分析的函數
a();

//結束分析
$xhprof_data = xhprof_disable();
//實例化xhprof類
$xhprof_runs = new XHProfRuns_Default();
//獲取當前當前頁面分析結果
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");

echo "\nhttp://test.localhost/xhprof/xhprof_html/index.php?run=$run_id&source=xhprof_foo\n";

保存代碼之后,通過瀏覽器訪問對應的URL地址,URL地址如下所示

http://test.localhost/xhprof/test.php

5.3 結果分析

運行后結果,如下圖

利用PHP擴展Xhprof分析項目性能實踐教程

在頁面中可以看到一個URL地址,復制并打開此URL地址之后,便能看到此代碼的分析結果,如下圖所示

利用PHP擴展Xhprof分析項目性能實踐教程

在頁面中有一個列表,展示了每一個方法所消耗的時間,如果覺得列表的方式表示不夠清晰,點擊頁面中的 View Full Callgraph 鏈接可以直接生成一個圖片,如下圖所示

利用PHP擴展Xhprof分析項目性能實踐教程

在圖中很清晰的可以看到執行時間都消耗在test方法上,因此筆者可以針對這個方法進行針對性的優化。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美日韩精品久久久免费观看 | 亚洲国产精品久久久久 | 日韩成人在线视频 | 99精品一区二区三区 | 国产精品久久久久久久 | 成人一区二区三区久久精品嫩草 | 婷婷色综合 | www日韩 | 精品久久久久久久久久久久 | 亚洲欧美高清 | 91在线一区 | 国产精品自拍视频 | 中文字幕一区二区三区乱码图片 | 天天色成人综合网 | 天天澡天天狠天天天做 | 一区二区三区亚洲 | 国产日韩欧美视频 | 99热这里有精品 | 日韩欧美手机在线 | 国产乱xxxxx97国语对白 | 日韩高清在线一区 | 亚洲性视频在线 | 99看片 | 国产午夜精品一区二区三区 | 亚洲电影一区二区三区 | 羞羞羞羞 | 欧美一级在线 | 国产精品视频播放 | 久久一级 | 国产在线综合网 | 国内美女人妻一级毛片免费看 | 久草电影在线观看 | 在线免费黄 | 欧美日韩高清一区 | 日韩成人 | 免费在线a| 国产区第一页 | 福利久久 | 日韩国产在线 | 久久亚 | 日韩在线视频中文字幕 |