成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用PHP擴(kuò)展Xhprof分析項(xiàng)目性能實(shí)踐

高勝山 / 402人閱讀

摘要:一背景項(xiàng)目即將上線,想通過(guò)一些工具來(lái)分析代碼的穩(wěn)定性和效率,想起在上個(gè)團(tuán)隊(duì)時(shí)使用過(guò)的擴(kuò)展因?yàn)閾Q了新電腦,所以需要重新編譯此擴(kuò)展,現(xiàn)將安裝與實(shí)際排查過(guò)程完整記錄下來(lái),方便自己回顧和幫助更多的讀者。作者湯青松微信日期

一、背景

項(xiàng)目即將上線,想通過(guò)一些工具來(lái)分析代碼的穩(wěn)定性和效率,想起在上個(gè)團(tuán)隊(duì)時(shí)使用過(guò)的xhprof擴(kuò)展;因?yàn)閾Q了新電腦,所以需要重新編譯此擴(kuò)展,現(xiàn)將安裝與實(shí)際排查過(guò)程完整記錄下來(lái),方便自己回顧和幫助更多的讀者。

二、操作步驟

安裝擴(kuò)展

配置擴(kuò)展

測(cè)試分析

三、安裝

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

3.1 下載源碼

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

git clone https://github.com/longxinH/xhprof
3.2 檢測(cè)環(huán)境

進(jìn)入編譯的文件夾,參考命令

cd xhprof/extension/

現(xiàn)在筆者需要編譯一下源碼,在編譯之前可以使用phpze來(lái)探測(cè)PHP的環(huán)境,參考命令如下:

phpize

返回結(jié)果如下

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
3.3 編譯安裝

生成 Makefile,為下一步的編譯做準(zhǔn)備

./configure

返回結(jié)果如下

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

開(kāi)始編譯,并進(jìn)行安裝

make && make install

返回結(jié)果如下

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

Installing shared extensions:     /usr/local/Cellar/[email protected]/7.1.19/pecl/20160303/

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

四、配置

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

4.1 找出配置文件位置

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

php --ini

執(zhí)行命令后,返回結(jié)果如下

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

在返回結(jié)果當(dāng)中,可以看到多個(gè)配置文件的路徑,筆者所需要的是第二個(gè)文件php.ini

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

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

返回結(jié)果如下

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 修改配置

從返回的結(jié)果當(dāng)中,可以看到擴(kuò)展的存放目錄位置如下

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

現(xiàn)在需要將剛才編譯好的xhprof擴(kuò)展復(fù)制到該目錄當(dāng)中,參考命令如下

cp /usr/local/Cellar/[email protected]/7.1.19/pecl/20160303/xhprof.so  /usr/local/Cellar/[email protected]/7.1.19/pecl/20160303/

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

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

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

[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/www/xhprof/save_output_dir 
4.3 重啟生效

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

brew info [email protected]

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

To have launchd start [email protected] now and restart at login:
  brew services start [email protected]
Or, if you don"t want/need a background service you can just run:
  php-fpm

因此筆者構(gòu)造的重啟PHP-FPM命令如下:

brew services restart [email protected]

重啟完成后,返回結(jié)果如下

Stopping `[email protected]`... (might take a while)
==> Successfully stopped `[email protected]` (label: [email protected])
==> Successfully started `[email protected]` (label: [email protected])
4.4 驗(yàn)證安裝

現(xiàn)在驗(yàn)證xhprof擴(kuò)展是否已經(jīng)安裝完成,參考命令如下

php -m | grep xhprof

命令執(zhí)行后,安裝擴(kuò)展成功的返回結(jié)果將會(huì)顯示xhprof,如下圖所示

五、測(cè)試

經(jīng)過(guò)上面的操作筆者已經(jīng)成功的安裝與配置,現(xiàn)在需要用PHP代碼來(lái)進(jìn)行驗(yàn)證xhprof的分析效果

5.1 創(chuàng)建虛擬主機(jī)

首先創(chuàng)建一個(gè)虛擬主機(jī),讓用戶可以通過(guò)瀏覽器訪問(wèn)所訪問(wèn),創(chuàng)建虛擬主機(jī)需要有一個(gè)根目錄,并編輯nginx配置文件,具體操作如下:

5.1.1 創(chuàng)建項(xiàng)目目錄

創(chuàng)建項(xiàng)目根目錄,參考命令如下

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

創(chuàng)建成功之后,筆者需要將之前git拉下來(lái)的部分代碼復(fù)制到項(xiàng)目根目錄當(dāng)中,參考命令如下

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文件中增加入一行解析記錄,記錄內(nèi)容如下:

127.0.0.1 test.localhost
5.2 新建測(cè)試代碼

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

使用vim新建一個(gè)PHP文件

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

在文件中加入以下代碼

save_run($xhprof_data, "xhprof_foo");

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

保存代碼之后,通過(guò)瀏覽器訪問(wèn)對(duì)應(yīng)的URL地址,URL地址如下所示

http://test.localhost/xhprof/test.php
5.3 結(jié)果分析

運(yùn)行后結(jié)果,如下圖

在頁(yè)面中可以看到一個(gè)URL地址,復(fù)制并打開(kāi)此URL地址之后,便能看到此代碼的分析結(jié)果,如下圖所示

在頁(yè)面中有一個(gè)列表,展示了每一個(gè)方法所消耗的時(shí)間,如果覺(jué)得列表的方式表示不夠清晰,點(diǎn)擊頁(yè)面中的 View Full Callgraph 鏈接可以直接生成一個(gè)圖片,如下圖所示

在圖中很清晰的可以看到執(zhí)行時(shí)間都消耗在test方法上,因此筆者可以針對(duì)這個(gè)方法進(jìn)行針對(duì)性的優(yōu)化。


作者:湯青松

微信:songboy8888

日期:2018-08-27

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29316.html

相關(guān)文章

  • PHP 性能分析第一篇: Xhprof & Xhgui 介紹

    摘要:注這是我們應(yīng)用性能分析系列的第一篇,閱讀第二篇可深入了解,第三篇?jiǎng)t關(guān)注于性能調(diào)優(yōu)實(shí)踐。性能分析的行為也會(huì)影響應(yīng)用性能。主動(dòng)被動(dòng)性能分析主動(dòng)分析器在開(kāi)發(fā)過(guò)程中使用,由開(kāi)發(fā)人員啟用。它對(duì)性能的影響最小,同時(shí)收集足夠的信息用于診斷性能問(wèn)題。 注:這是我們 PHP 應(yīng)用性能分析系列的第一篇,閱讀第二篇可深入了解 xhgui,第三篇?jiǎng)t關(guān)注于性能調(diào)優(yōu)實(shí)踐。 什么是性能分析? 性能分析是衡量應(yīng)用程...

    RdouTyping 評(píng)論0 收藏0
  • 使用XHProf分析PHP性能瓶頸(二)

    摘要:上一篇文章里,我們介紹了如何基于擴(kuò)展來(lái)分析性能,并記錄到日志里,最后使用擴(kuò)展自帶的在里展示出來(lái)。本次測(cè)試中,實(shí)際使用了擴(kuò)展切換為擴(kuò)展后里看不到數(shù)據(jù),原因未知。雖然來(lái)自但已經(jīng)很久不更新,官方源已經(jīng)顯示此包已廢棄,不再維護(hù)。 上一篇文章里,我們介紹了如何基于xhprof擴(kuò)展來(lái)分析PHP性能,并記錄到日志里,最后使用xhprof擴(kuò)展自帶的UI在web里展示出來(lái)。本篇文章將講述2個(gè)知識(shí)點(diǎn): ...

    Worktile 評(píng)論0 收藏0
  • PHP性能被動(dòng)分析工具之xhgui加tideways的安裝實(shí)踐

    摘要:性能被動(dòng)分析工具之加的安裝實(shí)踐前言最近一直想做個(gè)接口性能分析,但是手打?qū)嵲谀馨讶私o累死。怎么辦呢想到之前有寫(xiě)過(guò)一篇我所知道的相關(guān)調(diào)優(yōu)匯總,里面有一個(gè)的調(diào)優(yōu)方式。但是使用它酷炫的需要付費(fèi),擴(kuò)展則不需要。 PHP性能被動(dòng)分析工具之xhgui加tideways的安裝實(shí)踐 By:0x584A Date:2016-11-23 17:55:42 前言 最近一直想做個(gè)接口性能分析,但是手打log實(shí)在...

    Chiclaim 評(píng)論0 收藏0
  • 使用XHProf分析PHP性能瓶頸(一)

    摘要:輸出的性能數(shù)據(jù)中添加數(shù)據(jù)。中間是要分析的代碼。是一個(gè)繪制圖形的工具,可以更為直觀的讓你查看性能的瓶頸。這樣所有使用該環(huán)境的都會(huì)生效。這樣僅該項(xiàng)目生效。 安裝xhprof擴(kuò)展 wget http://pecl.php.net/get/xhprof-0.9.4.tgz tar zxf xhprof-0.9.4.tgz cd xhprof-0.9.4/extension/ sudo phpi...

    pkwenda 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<