大型网站调试工具之一(php性能优化分析工具XDebug)

news/2024/5/9 15:25:12/文章来源:https://dengbin.blog.csdn.net/article/details/3962511

 

一、安装配置
  1、下载PHP的XDebug扩展,网址:http://xdebug.org/

  2、在Linux下编译安装XDebug

引用
tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure --enable-xdebug
cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/


  注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/不同的PHP版本路径不同,也不一定要放在该路径,可以在zend_extension_ts中自行指定xdebug.so所在位置。

引用
vi /usr/local/php/lib/php.ini


  修改php.ini,去除PHP加速模块,增加以下配置信息支持XDebug扩展

  1. [Xdebug]   
  2. zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/xdebug.so"  
  3. xdebug.profiler_enable=on  
  4. xdebug.trace_output_dir="/tmp/xdebug"  
  5. xdebug.profiler_output_dir="/tmp/xdebug"  
  6. xdebug.profiler_output_name="script"  

 

view plaincopy to clipboardprint?
  1. [Xdebug]   
  2. zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/xdebug.so"  
  3. xdebug.profiler_enable=on  
  4. xdebug.trace_output_dir="/tmp/xdebug"  
  5. xdebug.profiler_output_dir="/tmp/xdebug"  
  6. xdebug.profiler_output_name="script"  

 

引用
mkdir -p /tmp/xdebug
chmod 755 /tmp/xdebug
chown www:www /tmp/xdebug
/usr/local/apache/bin/apachectl -k restart



  3、客户端(Windows):WinCacheGrind
  下载地址:http://sourceforge.net/projects/wincachegrind/

  二、分析过程
  1、访问你的网站,将首页上各种链接点击几遍,XDebug在/tmp/xdebug目录生成以下文件:
  usr_local_apache_htdocs_app_checknum_chknum_php_cachegrind.out
  usr_local_apache_htdocs_app_login_showHeaderLogin_php_cachegrind.out
  usr_local_apache_htdocs_app_play_play_php_cachegrind.out
  usr_local_apache_htdocs_app_user_member_php_cachegrind.out
  usr_local_apache_htdocs_tag_tags_php_cachegrind.out
  usr_local_apache_htdocs_top_top_php_cachegrind.out

  2、将以上文件拷贝到Windows上,用客户端软件WinCacheGrind打开每个文件,发现以下PHP程序执行所耗费的时间最长:
  /usr/local/apache/htdocs/tag/tags.php      耗时840ms

  三、分析结果:
  1、/usr/local/apache/htdocs/tag/tags.php

  



  (1)耗时最长的filter_tags函数出现在/usr/local/apache/htdocs/tag/tags.php的第158行:
  $tags .= filter_tags($videos[$i]['tags'])." ";

  (2)filter_tags函数引自/usr/local/apache/htdocs/include/misc.php,getForbiddenTags函数被filter_tags函数调用了21次,filter_tags函数耗费的时间中绝大多数因getForbiddenTags函数所致。getForbiddenTags函数的内容如下:

  1. function getForbiddenTags()   
  2. {   
  3.      
  4.   $tagsPath=TEMPLATE_FILE_PATH."tags/forbidden_tags.txt";   
  5.     if(file_exists($tagsPath))   
  6.     {   
  7.         $fp = fopen($tagsPath"r");   
  8.       $arrconf = array ();   
  9.       if ($fp)    
  10.         {   
  11.         while (!feof($fp))    
  12.             {   
  13.           $line = fgets($fp, 1024);   
  14.           $line = trim($line);   
  15.           $rows = explode("#"$line);   
  16.           $coumns = explode("=", trim($rows[0]));   
  17.                 if(""!=trim($coumns[0]))   
  18.                 {   
  19.               $arrconf[trim($coumns[0])] = trim($coumns[1]);   
  20.                 }   
  21.         }   
  22.       }   
  23.         return $arrconf;   
  24.     }   
  25. }   

 

view plaincopy to clipboardprint?
  1. function getForbiddenTags()   
  2. {   
  3.      
  4.   $tagsPath=TEMPLATE_FILE_PATH."tags/forbidden_tags.txt";   
  5.     if(file_exists($tagsPath))   
  6.     {   
  7.         $fp = fopen($tagsPath"r");   
  8.       $arrconf = array ();   
  9.       if ($fp)    
  10.         {   
  11.         while (!feof($fp))    
  12.             {   
  13.           $line = fgets($fp, 1024);   
  14.           $line = trim($line);   
  15.           $rows = explode("#"$line);   
  16.           $coumns = explode("=", trim($rows[0]));   
  17.                 if(""!=trim($coumns[0]))   
  18.                 {   
  19.               $arrconf[trim($coumns[0])] = trim($coumns[1]);   
  20.                 }   
  21.         }   
  22.       }   
  23.         return $arrconf;   
  24.     }   
  25. }  


  (4)对getForbiddenTags函数进行分析,其中的PHP函数trim被调用了16827次。
  

 


  (5)可能造成瓶颈的原因:
  要过滤的156个关键字逐行存放在/usr/local/apache/template/tags/forbidden_tags.txt文件中,文本数据库的效率不高。
  逐行读取函数fgets、以及去除字符串两边的空白或者指定的字符的函数trim在高负载下的效率低,可以测试fopen、fread、fscanf之类的文件读取函数,对比一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_782286.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从官方网站上下载了Xenomai后怎么继续学习?下载Linux4.14和ipipe4.14并解决下载ipipe下载慢的问题

本篇文章记录自己安装完成Xenomai包的后续操作,参考的主要线索是 使用 uname -a可以查看本地的Linux内核版本 (base) warmtreewarmtree-HP-Pavilion-Laptop-15-cc5xx:~$ uname -a Linux warmtree-HP-Pavilion-Laptop-15-cc5xx 5.3.0-53-generic #47~18.04.1-Ubunt…

酷哥搜索Gcoge.Com(Bindeng.Com)真诚邀请各类网站、企业、机构一同携手,通过各种合作模式....

酷哥搜索是一个实现所有人对所有人(ALL TO ALL,即A2A)的商业信息传播媒体。覆盖全国三百多个城市,致力于打造商业搜索引擎专业品牌,旨在实现商业信息传播的全球化,满足上千万商业用户的各种信息需求。我们真诚的邀请各类网站、企业…

ASP.Net AJAX+userControl+js实现仿igoogle效果网站

不知道大家有没有用过igoogle这个google的个人门户网站,我弄的这个东西就是模仿igoogle,主要的难点是新闻模块的动态生成和模块的拖放功能和位置保存。基本原理是用userControl去实现新闻的容器--新闻模块,模块的内容由RSS提供,AS…

GCOGE技术内幕-Gcoge酷鸽传媒官方网站 Gcoge.com-酷哥一下,问题搞定!

Gcoge酷鸽传媒官方网站 Gcoge.com-酷哥一下,问题搞定!- 酷哥引擎新媒体 酷哥搜索珀利引擎-全球唯一全新概念珀利引擎新媒体--聚合优化创新 新思维 心服务~一个域名,通行天下!全球最大聚合门户!全球卓著搜索专家! 国内外著名搜索引擎聚合门户~我们的宗旨是为人民服务…

LAMP网站架构方案分析

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件&a…

如何搭建网站

常见的三种主流技术架构为 (1)LinuxApache/Nginx/LighttpdMysql/MariaDBPerl/PHP/Python 常见网站:新浪,维基百科,youtube,facebook,flickr (2)J2EE:jsp …

微视频试水社交网站 渐趋移动互联应用

与微视频/微电影的流行同步进行的是社交网络的兴起,微博成为比即时通讯更热门的交流工具,在微博界面能添加视频,这无疑给微电影一个爆发的平台。社交网络里的传播行为毫不保留地在微视频/微电影上体现和延伸。 在视频网站为“烧钱买独播剧”还…

开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo

代码下载热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力。由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI。它有完整的demo和强大AIP手册,使我在开发过程中得心应手。以下是这篇博文Demo…

美网站曝光乔布斯近照:面容憔悴令人担忧

北京时间8月27日消息,AOL旗下名人八卦网站TMZ曝光乔布斯近照,据称摄于乔布斯宣布退休后的第二天。图中的乔布斯形销骨立、面容憔悴。这张照片显示,乔布斯穿着一件黑色齐膝长袍,在阳光下站在一辆汽车旁,身边有一名身份未…

网络SEO优化 蜘蛛时代开启

百汇传媒多一度网络营销小贴士:SEO(Search Engine Optimization),行业内称为搜索引擎优化,是较为流行的网络营销方式,主要目的是增加特定关键字的曝光率以增加网站的能见度,进而增加销售的机会。…

使用burp进行网站爆破

burp爆破的前提条件是该网站账号密码没有进行加密而是明文,且验证码可以重复使用,如下图数据包中直接显示账号与密码且验证码不需要重复提交(此处需要自己使用burp进行测试) 1.进入burp,监听浏览器 2.打开网站输入账…

【Java基础】静态网站技术-review

文章目录通信和服务图解工作过程待review问题参考通信和服务 早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器,今天我们追溯一下。 协议规范: 万维网(WorldWideWeb&#xff…

家谱社交网站MyHeritage开放家庭图谱API

MyHeritage被认为是以色列最有希望的web2.0公司,保持着高速的成长,让竞争对手Geni和Ancestry.com(已经上市)望尘莫及。 这家公司已经拥有接近6千万的注册用户,上传了2千万份家谱、8亿份档案和1.25亿张照片。这些储备对完成像MyHer…

本地化社交问答网站Drumo瞄准亚洲和澳洲市场

Drumo是由澳大利亚数字媒体公司Design Royale开发的本地化社交问答网站,目前在悉尼,东京和新加坡已经推出了服务,很快将登陆上海,香港,台北,墨尔本等更多亚洲和澳洲的城市。做问答社区的困难之处在于保持用…

12岁小学生自创5家网站 曾获腾讯300元创业贷款

9月1日,是中小学开学的日子。当天上午11时许,在平顶山市新华区胜利街小学六年级6班的教室里,东方今报记者见到了自创5家网站、组织十多人开发销售电脑软件的田众和。12岁的田众和坐在教室倒数第二排,大大的眼睛,高高的…

推荐一个很棒的免费自助建站工具:Tap

Tap简介Tap(www.tap.cn)是一个新型的免费自助建站服务平台,易用、专业、高效的Tap能让您轻松摆脱建站过程中技术对创造力的制约。拥有极高自由度的Tap能够快速提升您的建站热情。Tap为不同用户的需求配备了完美的个性化解决方案,T…

004coursera网站中的VTT字幕的使用

coursera网站中的VTT字幕的使用 1、 https://www.coursera.org/learn/os-virtsecurity/lecture/xuWgP/1-3-cao-zuo-xi-tong-an-quan-de-zhong-yao-xing 在coursera网站通过360极速浏览器的插件)下载的视频(有三个分辨率:1280x720&#xff08…

网站前端性能优化总结

一、服务器侧优化1. 添加 Expires 或 Cache-Control 信息头 某些经常使用到、并且不会经常做改动的图片(banner、logo等等)、静态文件(登录首页、说明文档等)可以设置较长的有效期(expiration date)&#x…

大型网站动态应用系统架构

动态应用,是相对于网站静态内容而言,是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。大型动态应用系统…

设计易理解和操作的网站

当将易操作的理念融合到网站设计中时,网站设计的问题就变得更加复杂。当大多数人将使用全屏显示器访问计算机时,这些理念往往容易被大众忽视。除了需要考虑人们的身体条件如视力不好外,你也不得不注意到关于浏览器市场的不断变化。给你的用户…