用xhprof替代xdebug

以前一直在用xdebug作php的性能分析,但这东西太耗性能,只能在开发机上跑跑。前几天在网上看到xhprof这东西,是facebook开源的,别人都用上一年了,我才知道,唉,落伍了,废话少说,亡羊补牢,还未晚。
一、安装xhprof

  1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz
  2. tar zxvf xhprof-0.9.2.tgz
  3. cd xhprof-0.9.2
  4. cp -r xhprof_html xhprof_lib <directory_for_htdocs> # 应用程序所在目录
  5. cd extension
  6. /usr/local/php/bin/phpize
  7. ./configure  --with-php-config=/usr/local/php/bin/php-config
  8. make
  9. make install
  10. </directory_for_htdocs>

Read the rest of this entry »

,

No Comments

Trac 0.11 assign to 没有下拉列表的解决办法

好长时间没有写东西了,最近一直在赶项目,已经做了快2年的项目–《三国英雄传》,预期6月和大家见面。
公司的Trac最近连不上了,只好用我架的,发现assign to是input,不是select,在网找到2个贴子:

1. http://trac-hacks.org/wiki/FlexibleAssignToPlugin

2.http://www.ooso.net/archives/443

按上面的试了,都不行,后来,见到这个贴子:

http://pacopablo.com/wiki/pacopablo/blog/set-assign-to-drop-down

突然发现我的trac.ini里的配置好像和文中的

  1. restrict_owner = true

不同,我的默认的是false,把这个配置开打,重启apache,发现select又回来了!

No Comments

PHP 5下foreach引用导致程序出错

今天和同事在调试一段代码时,死活找不出哪里出错,后来一步一步找,在一个看似不可能出问题的地方出问题了,代码类似下面这样:

  1. $array1 = array(1, 2);
  2. $array2 = array(3, 4);
  3. foreach($array1 as &$item){
  4. }
  5.  
  6. foreach($array2 as $item){
  7. }
  8. echo $array1[1];

这时得到的值是多少?我们想要的是2吧,但程序输出的却是4!
这是为什么呢?
在第一个循环完成后$array1[1] == $item,这时继续第二个循环,完成后就成了$array2[1] == $item == $array1[1],因为第一个循环是引用,所以在第二个循环后$array1[1] == $array2[1]。
一个教训,以后在使用临时变量时,2种办法至少要用上一种:
1、在使用临时变量前先unset(临时变量);
2、在用完临时变量后unset(临时变量);

,

3 Comments

[转载]漳平话=普通话对照表

在QQ校友录:看到的,很亲切,从高中毕业离开到现在正好十年了,现在都快不会说了。

利种改—你在干嘛 捞卡—楼下
拱信改——说什么 紧节——很多
利发笑—你发疯 摞后—下雨
劳定—楼上 主来醉—自来水
麦安内—不要这样 醉—水
频过—苹果
爱困喽—想睡了 莫半话—没办法
照—跑 利末西啊—你要死啊
唉塞–可以 替钉—铁钉
挖矮利—我爱你 挖兄利—我想你
利掉多—你在哪 半塞—拉屎
逼就—啤酒 兵又—朋友
扒同关—打通关 西干—时间
昏—烟 灯叮—电灯
麦—不 抓—蛇
启迪—养猪 触定—屋顶
卡拉洽—自行车 蛋—等
安内—这样 迪翔—筷子
西灾莫喂共—实在没话说 滚最—开水

,

1 Comment

Vim的Jquery语法插件

因为工作中经常要用jquery,现在的主要的编码工具已经从IDE转到vim了,今天正好发现这个jquery插件,官方下载,用法非常简单:
Copy the jquery.vim file to $HOME/.vim/syntax/ and add the following line to your vimrc:
au BufRead,BufNewFile *.js set ft=javascript.jquery

,

4 Comments

ubuntu 9.04下安装xdebug和kcachegrind

本文假设读者已经安装好php及web服务器
1、编译安装xdebug
到http://xdebug.org/download.php下载对应的源码包,我下的是2.0.5;

  1. tar xvf xdebug-2.0.5.taz
  2. cd xdebug-2.0.5

可以查看README,为了方便一些同学,我把主要步骤贴出来

  1. /usr/local/webserver/php/bin/phpize
  2. ./configure --enable-xdebug --with-php-config=/usr/local/webserver/php/bin/php-config
  3. make

把生成的xdebug.so放到php的lib目录下

  1. cp modules/xdebug.so /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/

编辑php.ini,加入以下内容

  1. [Xdebug]
  2. zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
  3. xdebug.auto_trace=on
  4. xdebug.collect_params=on
  5. xdebug.collect_return=on
  6. xdebug.trace_output_name="%H.%s"
  7. xdebug.trace_output_dir="/data/logs/xdebug"
  8. xdebug.profiler_enable=on
  9. xdebug.profiler_output_dir="/data/logs/xdebug"
  10. xdebug.remote_port=8999

具体的配置可以参考:http://xdebug.org/docs/all_settings
注意:输出目录要预先建好,否则不会输出内容。
重启web服务器(或php-fpm)后,在phpinfo中查看是否有xdebug的信息,有的话就成功了。
2.安装kcachegrind
这个就容易多了

  1. sudo apt-get install kcachegrind

至此,你就可以用kcachegrind来分析你的PHP代码了。

, ,

No Comments

[转载]强盗与医生的区别

在一个同学群里看到的,很认同。

强盗通常只在晚上做案,医生却全天候抢钱;

强盗风里来雨里去四处流窜,医生冬天暖小天凉环境优雅;

你把钱交给强盗是为了活命,你为了活命而把钱交给医生;

强盗只能抢光你身是的财富,医生却能抢光你一生的积蓄;

强盗只会逼你掏钱,医生却能逼你借债;

你碰上强盗作案可以破财消灾,你碰上医生抢钱却得倾家荡产;

强盗作案时胆战心惊小心翼翼,医生抢钱时理直气壮无所顾忌;

强盗还怕你人多势众,医生却连警察也照抢不误;

你被强盗抢了可以报警,你被医生抢了只能认命;

强盗作案是把自己打扮成魔鬼,医生抢钱时把自己伪装成天使;

强盗抢光你的钱他逃跑,医生抢光你的钱让你滚蛋;

强盗抢多了叫数额巨大得枪毙,医生钱抢多了称贡献突出受表彰;

你把强盗杀了叫正当防卫,你把医生宰了叫违法犯罪;

医生一辈子也许不会被强盗抢,强盗一生中肯定会被医生抢;

医生上辈子肯定是强盗,强盗下辈子一定想做医生.

No Comments

FireFox异常错误“Cr.NS_ERROR_FILE_NOT_FOUND“解决方案

长久以来,我的FireFox老是会报以下错误:

  1. [Exception... "update.locale file doesn't exist in either the XCurProcD or GreD directories" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: file:///usr/lib/xulrunner-1.9.1.2pre/components/nsUpdateService.js :: getLocale :: line 549" data: no]
  2. [Break on this error] " directories", Cr.NS_ERROR_FILE_NOT_FOUND);

终于受不了,打开这个文件,找到出错位置,经过几次尝试,解决了,方案很简单:

  1. sudo touch /usr/lib/firefox-3.5.5pre/update.locale

注意:firefox-3.5.5pre换成你的FireFox真实路径。

No Comments

CentOS 5.2下安装Vsftpd

1.安装vsftpd,pam,pam-devel

yum install vsftpd pam pam-devel

Read the rest of this entry »

,

No Comments

Ubuntu 9.04(amd64)下安装Flash player

因为项目中的网页有用到Flash,还是背景透明,之前一直懒得装Flash player,看着一块一块狗皮膏药,真不爽,还是装上吧,办法如下:

sudo apt-get purge flashplugin-nonfree gnash gnash-common mozilla-plugin-gnash nspluginwrapper swfdec-mozilla
wget http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz && tar xvfz libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz
sudo cp libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so

,

4 Comments