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

news/2024/4/28 19:31:46/文章来源:https://blog.csdn.net/sws9999/article/details/3880386

一、安装配置
  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_840232.aspx

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

相关文章

memcached在大负载高并发网站上的应用(1)

http://blog.csdn.net/wanghao72214/archive/2009/01/31/3855718.aspx 大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过。这都没什么关系,本文旨在从各个角度综合的介绍这种产…

Github第一章——注册 登录(这里指网页上托管代码的网站)

Github:这里指集成了git指令并可以提供代码托管的第三方平台及 GitHub平台。 Github Logo:官方名称为-Octocat 是一种八爪鱼和猫的结合体 以前的样子: 现在的样子: Github 官网:https://github.com/ 接下来我们开始今天的正题…

从LiveJournal后台发展看大规模网站性能优化方法

一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目,几个人出于爱好做了这样一个应用,以实现以下功能: 博客,论坛 社会性网络,找到朋友 聚合,把朋友的文章聚合在一起 LiveJournal采用了大量的开…

发布:论文阅读批注网站PaperDecode.com【转载】

发布:论文阅读批注网站PaperDecode.com 转载自: https://zhuanlan.zhihu.com/p/82778937 智能单元团队正式推出PaperDecode学术社区。 一、PaperDecode是什么? PaperDecode是一个论文在线阅读、批注、交流网站(app)。 一个专业的学术社区…

是否还为制作PPT而烦恼?珍藏的PPT实用网站打包送给你!

是否还为制作PPT而烦恼?珍藏的PPT实用网站打包送给你! 文章目录1.图片检索2.图标3. 灵感来源:4. 字体在做PPT的时候你时候会因为找不到好的网站来收集素材而苦恼不已呢?不用担心,在这篇博客里PPT好用的素材网站打包送给…

linux上同个tomcat服务器布署多个静态网站项目配置访问链接

这 里我的环境是linux 两个项目都已经上传成功。 打开tomcat 的 conf目录下的 server.xml 文件 1、 找到Host节点 2、在该节点下配置两个项目的访问路径 <Context path"/" docBase"/usr/local/tomcat/tomcat-8081/webapps/charmbirds" debug"0…

专访阿里陈康贤:我所理解的网站架构

【编者按】CSDN在日前策划了架构主题月活动&#xff1a;《互联网应用架构面面观》&#xff0c;就架构的方法面面进行各种形式探讨交流。今天&#xff0c;我们就网站架构这一话题&#xff0c;线上专访了阿里淘宝技术部技术专家陈康贤&#xff0c;著有《大型分布式网站架构设计与…

利用GitHub搭建自己专属的网站

综述&#xff1a;利用github搭建自己专属的网站方法分享&#xff0c;比如个人的电子版简历&#xff0c;特别提醒&#xff0c;该方法只针对public仓库&#xff0c;从2019-01月后&#xff0c;github支持免费创建私有仓库&#xff0c;不过最多只能三个人协同开发 1.首先需要一个gi…

Bitbucket网站——基于web的版本库托管服务

1.bitbucket介绍 Bitbucket是Atlassian公司提供的一个基于web的版本库托管服务&#xff0c;支持Mercurial和Git版本控制系统。Bitbucket既提供免费帐号&#xff0c;也提供商业付费方案。免费帐号可使用的私有版本库不限数量&#xff0c;但最多可支持5名用户&#xff08;截至20…

使用腾讯云CDN后网站提示Nixed Content: The page at URL was loaded over HTTPS, but requested an insecure script

最近用WordPress加一为导航主题搭建了一个导航站&#xff0c;考虑到不暴露源站IP然后套了个腾讯云的CDN。 但是今天访问网站整个网站样式全部错乱&#xff0c;打开控制台查看提示&#xff1a; Nixed Content: The page at URL was loaded over HTTPS, but requested an insec…

(自适应手机端)仓储货架仓库货架网站源码 响应式超市货架展架类网站pbootcms模板

(自适应手机端)响应式超市货架展架类网站pbootcms模板 仓储货架仓库货架网站源码下载 PbootCMS内核开发的网站模板&#xff0c;该模板适用于货架展架网站、仓储货架网站等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b; 自适…

Ripro主题X系列站长素材下载网站模板

模板介绍 花130元买的Ripro主题X系列站长素材下载网站模板免费分享给大家&#xff0c;PHP版本要求&#xff1a;7.2及以上 主题设置&#xff1a;全功能后台设置&#xff0c;无需改代码 主题特色&#xff1a;无需替换RIPRO原主题包任何内容即可实现后台全功能开关修改&#xf…

wpthemedetector在线查询wordpress网站使用主题工具

工具说明 如果您在浏览wordpress内核网站的时候&#xff0c;遇到一些好看的主题&#xff0c;但是却不知道对方用的什么主题模板&#xff0c;可以使用该工具查询对方的主题。 wpthemedetector是一款国外在线查询wordpress网站使用主题工具&#xff0c;该工具轻松查询wordpress…

(美化)WordPress网站添加自定义字体

背景 通过CSS属性font-face和font-family可以实现加载自定义web font&#xff0c;改变网页字体&#xff0c;实现美化效果。 1.引用字体文件 出于版权风险考虑&#xff0c;尽量使用免费可商用的字体作为web font。 本文教程使用的为站酷仓耳渔阳字体&#xff0c;是站酷发布的…

阿里云云服务器无法通过公网ip地址访问网站的解决方法

刚购买的阿里云服务器自建网站却发现无法通过公网ip地址访问网站&#xff0c;主要是由于阿里云云服务器默认没有配置80端口的http协议安全组&#xff0c;给其添加上即可。 在自己的服务器实例中点击更多&#xff0c;选择网络与安全组&#xff0c;点击安全组配置。 点击自己的…

使用云服务器创建网站(完整开发过程)

文章目录前言一、什么是HTML语言二、HTML网页设计1.DW&#xff08;Dreamweaver&#xff09;2.VS code(Visual Studio Code)三、运行网页查看效果1.运行2.问题的提出四、搭建云服务器1.注册购买华为云2.远程登陆Windows云服务器&#xff08;1&#xff09;使用RDP文件登录&#x…

Linux CentOS + Nginx 搭建网站

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;第一个公开版本0.1.0发布于2004…

网站后端遇到的一些小问题

文章目录1.数据库的一些问题1.数据库自动生成主键id2.MySQL数据库自动生成时间3.根据当前时间与数据库的某个时间相差了多少天4.使用MySQL创建触发器时出错&#xff1a;2.ssm框架使用pagehelper1.数据库的一些问题 1.数据库自动生成主键id 通过idea连接数据库&#xff0c;然后…

简易移动端爬虫实现pixabay网站图片搜索

有些时候你想在你的应用需要用到一些背景图片&#xff0c;但是没有图片啊&#xff0c;没有图片啊&#xff0c;没有图片啊。。。。。 当然你可以在应用内内置很多的精美图片&#xff0c;然后就造成了一些问题&#xff1a;你的apk变得贼大&#xff0c;其次想换一些新的图片只能在…

linux 安装xml文件,虚拟机XML文件 - Ubuntu 16.04 下 OpenStack 安装部署_服务器应用_Linux公社-Linux系统门户网站...

//如果是Xen&#xff0c;则type‘xen’Ubuntu //虚拟机名称&#xff0c;同一物理机唯一fd3535db-2558-43e9-b067-314f48211343 //同一物理机唯一&#xff0c;可用uuidgen生成524288524288 //memory这两个值最好设成一样2 //虚拟机可使用的cpu个数&#xff0c;查看…