php页面运行慢原因查找与监测分析代码

1 篇文章 0 订阅
1 篇文章 0 订阅

最近感觉域名比较乱和不规范和看到discuz把url静态化的rewrite放到htacess文件中觉得比较慢,于是想整理一下;

因为社区我基本不怎么管,没注意整理前运行速度如何.

在做完apache优化和域名优化后.感觉社区非常之慢.

以为是rewrite放到conf文件中写得有问题,于是看了n次apache rewrite_mod的说明文档,感觉已经考虑到的都考虑了.应该不可能.

又把rewrite处理log输出,看到解析也没有什么问题.因为有人跟我说,之前社区速度是不错的.所以我就没怀疑到社区有问题.

对于appache做最大性能的优化也没发现对于社区有什么提升.

在跟另一个同事讨论时,他说到在优化前已经出问题了,这时才想到把注意力转称到社区上来,

经过耗时监测.

rewrite+来回通讯大概在2秒左右,也就是余下的都是php解析总耗时了.感觉到rewrite启用后,大概会慢1秒左右?

而在页面代码中竟然耗掉4.5秒左右,觉得奇怪,因为有人跟我说,之前页面运行是毫秒级的...

最后终于查到是一个应用在每次页面解析时都生成一次sitemap.xml,是某人安装时,完全没设置,也不了解做什么用,装了就完事搞的.把这个插件去掉后,页面立刻少点5秒左右.


从此例子得到教训是:页面慢,应该立刻对不同的对象设置监测时间点,来定位耗时大户是谁然后再细化解决,即可弄明白.像我上面乱怀yi与相信非"专业"人的眼光,来排除,最终走了很大的弯路,因为要是直接认为问题出在apache上如它直接耗掉了5秒?那么apache这个定位起来就比较麻烦.不像php代码样,直接在某个代码行插入时间监测点就能看出来,这也是导致我花了几天时间想和试怎么监测apache各个动作的耗时


/*
 * 用于监测分析页面任意部分解析时间
 * 用法:首先在需要监测的页面define('qidiziTimeOn',1);然后在需要代码行放置时间基准点function_exists('qidiziTime') && qidiziTime(任意参数);页面结束解析前运行qidiziTime(0,1);输出调试结果,即可看到每个基准点与前一个基准点的耗时差,即可查出耗时最大的代码
 */
function qidiziTime($out = 0, $end =0) {
    if (!defined('qidiziTimeOn')) return;
    static $str = array();
    static $mt = null;
    static $init = null;
    if (null === $mt) $init = $mt = microtime(1);
    
    if ($end) {
        $str[] = 'all=' .round(microtime(1) - $init, 4);
        echo "<!--\n". implode("\n", $str) ."\n-->";
    } else {
        $t = microtime(1);
        $str[] = $out .' : '. round($t-$mt, 4) .' (' .$t. ')';
        $mt = $t;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值