Home > php, xhprof > 解决discuz论坛安装首页N格后打开首页缓慢的问题

解决discuz论坛安装首页N格后打开首页缓慢的问题

公司论坛(bbs.goapk.com)时常出现这种情况:首页打开缓慢,但是其它页面都比较正常。网上也发现有人提出这个问题,但没找到解决方案。今天用xhprof神器在测试机上看了下,发现是首页多格插件的问题。

解决方法:

打开文件 ./plugins/ducexhome/lib/default.inc.php 搜索 “checkremote”,45行会有句

  'checkremote' => 1,

把这句的1换成0就可以的。

这个配置是说,显示首页多格之前,论坛服务器是否检查附件服务的图片是否存在。这个过程在服务器上进行,没完成,php就不会有结果输出。在 ./plugins/ducexhome/xhome.php 里搜索 “checkremote”,就能看到相关代码段。按道理说,既然是个配置,应该可以在后台设置的,不过没找到在哪设置。

顺便在这里介绍下xhprof 的安装和使用。xhprof是facebook开源出来的php 代码profile 工具,很容易看到php 代码效率的瓶颈。我在ubuntu 10.04 上的安装脚本:

sudo apt-get install php-pear php5-dev
mkdir -p /opt/src/
cd /opt/src/
wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar -xvf xhprof-0.9.2.tgz

cd xhprof-0.9.2/extension
phpize
./configure
su
make && make install
make test

 

编辑php.ini (/etc/php5/apache/php.ini) 加入xhprof扩展配置:

    [xhprof]
    extension=xhprof.so
    ;
    ; directory used by default implementation of the iXHProfRuns
    ; interface (namely, the XHProfRuns_Default class) for storing
    ; XHProf runs.
    ;
    xhprof.output_dir=/opt/xhprof

然后重启apache,就可以生效了。

配置里面是可以指定xhprof输出目录,但是我还没有用到它自带的输出信息。因为我的目的只是找到慢语句。xhprof默认是不对profile结果按时间排序的,我们自己排:

 15 xhprof_enable(0,
 16             array('ignored_functions' =>  array('call_user_func',
 17                                                 'call_user_func_array')));
     ... (需要做profile的代码段)
 38 $xhprof_data = xhprof_disable();
 39 uasort($xhprof_data, create_function('$a,$b',
 40             'return $a["wt"]<$b["wt"];'));
 41 file_put_contents("/tmp/bbs.goapk.com.xhprof.info", var_export($xhprof_data, true));

执行结束之后再看看输出文件。找到问题出在哪,后面就好办了。

Advertisements
Categories: php, xhprof
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: