이 기사의 내용은 PHP의 Xhprof 확장 프로그램이 프로젝트의 성능을 분석하는 방법에 대한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
프로젝트가 곧 온라인으로 전환됩니다. 코드의 안정성과 효율성을 분석하기 위해 몇 가지 도구를 사용하고 싶습니다. 새 컴퓨터로 변경했기 때문에 이전 팀에서 사용했던 xhprof 확장 프로그램이 기억났습니다. , 이제 이 확장 프로그램을 다시 컴파일해야 합니다. 검토를 용이하게 하고 더 많은 독자를 돕기 위해 설치 및 실제 문제 해결 프로세스를 완전히 기록해야 합니다.
확장 프로그램 설치
확장 프로그램 구성
테스트 분석
3.1 소스 코드 다운로드
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 컴파일 및 설치
./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/
반환 정보는 다음과 같습니다. 설치가 완료되었으며, 확장 파일이 저장된 위치를 알 수 있습니다.
IV. 구성
4.1 위치를 알아보세요. 구성 파일
php --ini
After 명령을 실행하면 반환 결과는 다음과 같습니다
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
입니다. 확장 프로그램 디렉터리 저장 위치는 명령어를 참조하세요. 반환된 결과는 다음과 같습니다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 =
从返回的结果当中,可以看到扩展的存放目录位置如下
/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
保存好之后,笔者重启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)
现在验证xhprof扩展是否已经安装完成,参考命令如下
php -m | grep xhprof
命令执行后,安装扩展成功的返回结果将会显示xhprof,如下图所示
经过上面的操作笔者已经成功的安装与配置,现在需要用PHP代码来进行验证xhprof的分析效果
首先创建一个虚拟主机,让用户可以通过浏览器访问所访问,创建虚拟主机需要有一个根目录,并编辑nginx配置文件,具体操作如下:
创建项目根目录,参考命令如下
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/
添加配置文件,参考命令
/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
在git仓库的examples
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";4.2 구성 수정반환된 결과를 보면 확장 프로그램의 저장 디렉터리 위치는 다음과 같습니다. Follows
http://test.localhost/xhprof/test.php이제 방금 컴파일한 xhprof 확장자를 디렉터리에 복사해야 합니다. 다음 명령을 참조하세요. 다음과 같이
rrreee
xhprof 구성 추가 구성 파일의 끝 부분에 xhprof에서 생성된 소스 파일을 사용자 정의하여 다음과 같이 참조 구성을 저장합니다rrreee4.3 다시 시작하여 적용합니다 저장 후 작성자는 구성을 적용하기 위해 php-fpm을 다시 시작했습니다. restart 명령은 Brew 명령을 통해 볼 수 있습니다. 참조 명령은 다음과 같습니다.
rrreee명령이 실행된 후 반환되는 정보에서 다음 정보를 볼 수 있습니다
rrreee🎜그래서 작성자가 구성한 restart PHP-FPM 명령은 다음과 같습니다. 🎜rrreee🎜다시 시작이 완료된 후 반환 결과는 다음과 같습니다🎜rrreee🎜4.4 설치 확인🎜🎜이제 xhprof 확장이 설치되었는지 확인하면 참조 명령은 다음과 같습니다🎜rrreee🎜명령 후 실행되면 확장 프로그램이 성공적으로 설치되었습니다. 결과는 아래와 같이 xhprof로 표시됩니다🎜🎜/etc/hosts
파일에 파싱 기록 한 줄을 추가하면 기록 내용은 다음과 같습니다.🎜rrreee🎜5.2 새로운 테스트 코드 생성🎜🎜이미 데모 코드가 있습니다 git 저장소의 examples
폴더에 있습니다. 그런데 이 코드의 주석은 모두 영어로 되어 있고, 포맷 방법도 작성자가 이해하기 쉽지 않아서 다시 수정했습니다. 이 파일은 다음 단계를 참조하세요. vim을 사용하여 새 PHP 파일을 생성하세요🎜rrreee🎜파일에 다음 코드를 추가하세요🎜rrreee🎜코드를 저장한 후 브라우저를 통해 해당 URL 주소에 접속하면 URL 주소는 다음과 같습니다. 🎜rrreee🎜5.3 결과 분석🎜🎜실행 후 결과는 아래와 같습니다🎜🎜🎜🎜🎜🎜🎜해당 URL 주소를 복사해서 열어보시면 이 코드의 분석 결과를 보실 수 있습니다. , 아래 사진과 같이🎜
페이지에 각 방법에 소요되는 시간을 보여주는 목록이 있습니다. 목록이 충분히 명확하지 않다고 생각되면 페이지의 View Full Callgraph
링크를 클릭하여 그림과 같이 직접 그림을 생성하세요. 아래 그림
테스트 방법에서 실행 시간이 소모되는 것을 그림에서 확실히 볼 수 있으므로 작성자는 이 방법에 대한 타겟 최적화를 수행할 수 있습니다.
관련 권장사항:
웹 성능 분석을 위해 xhprof(PHP) 확장 사용
위 내용은 PHP의 Xhprof 확장이 프로젝트 성능을 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!