用xhprof替代xdebug
以前一直在用xdebug作php的性能分析,但这东西太耗性能,只能在开发机上跑跑。前几天在网上看到xhprof这东西,是facebook开源的,别人都用上一年了,我才知道,唉,落伍了,废话少说,亡羊补牢,还未晚。
一、安装xhprof
- wget http://pecl.php.net/get/xhprof-0.9.2.tgz
- tar zxvf xhprof-0.9.2.tgz
- cd xhprof-0.9.2
- cp -r xhprof_html xhprof_lib <directory_for_htdocs> # 应用程序所在目录
- cd extension
- /usr/local/php/bin/phpize
- ./configure --with-php-config=/usr/local/php/bin/php-config
- make
- make install
- </directory_for_htdocs>
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里的配置好像和文中的
- restrict_owner = true
不同,我的默认的是false,把这个配置开打,重启apache,发现select又回来了!
PHP 5下foreach引用导致程序出错
今天和同事在调试一段代码时,死活找不出哪里出错,后来一步一步找,在一个看似不可能出问题的地方出问题了,代码类似下面这样:
- $array1 = array(1, 2);
- $array2 = array(3, 4);
- foreach($array1 as &$item){
- }
- foreach($array2 as $item){
- }
- echo $array1[1];
这时得到的值是多少?我们想要的是2吧,但程序输出的却是4!
这是为什么呢?
在第一个循环完成后$array1[1] == $item,这时继续第二个循环,完成后就成了$array2[1] == $item == $array1[1],因为第一个循环是引用,所以在第二个循环后$array1[1] == $array2[1]。
一个教训,以后在使用临时变量时,2种办法至少要用上一种:
1、在使用临时变量前先unset(临时变量);
2、在用完临时变量后unset(临时变量);
[转载]漳平话=普通话对照表
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
ubuntu 9.04下安装xdebug和kcachegrind
本文假设读者已经安装好php及web服务器
1、编译安装xdebug
到http://xdebug.org/download.php下载对应的源码包,我下的是2.0.5;
- tar xvf xdebug-2.0.5.taz
- cd xdebug-2.0.5
可以查看README,为了方便一些同学,我把主要步骤贴出来
- /usr/local/webserver/php/bin/phpize
- ./configure --enable-xdebug --with-php-config=/usr/local/webserver/php/bin/php-config
- make
把生成的xdebug.so放到php的lib目录下
- cp modules/xdebug.so /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/
编辑php.ini,加入以下内容
- [Xdebug]
- zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
- xdebug.auto_trace=on
- xdebug.collect_params=on
- xdebug.collect_return=on
- xdebug.trace_output_name="%H.%s"
- xdebug.trace_output_dir="/data/logs/xdebug"
- xdebug.profiler_enable=on
- xdebug.profiler_output_dir="/data/logs/xdebug"
- xdebug.remote_port=8999
具体的配置可以参考:http://xdebug.org/docs/all_settings
注意:输出目录要预先建好,否则不会输出内容。
重启web服务器(或php-fpm)后,在phpinfo中查看是否有xdebug的信息,有的话就成功了。
2.安装kcachegrind
这个就容易多了
- sudo apt-get install kcachegrind
至此,你就可以用kcachegrind来分析你的PHP代码了。
[转载]强盗与医生的区别
在一个同学群里看到的,很认同。
强盗通常只在晚上做案,医生却全天候抢钱;
强盗风里来雨里去四处流窜,医生冬天暖小天凉环境优雅;
你把钱交给强盗是为了活命,你为了活命而把钱交给医生;
强盗只能抢光你身是的财富,医生却能抢光你一生的积蓄;
强盗只会逼你掏钱,医生却能逼你借债;
你碰上强盗作案可以破财消灾,你碰上医生抢钱却得倾家荡产;
强盗作案时胆战心惊小心翼翼,医生抢钱时理直气壮无所顾忌;
强盗还怕你人多势众,医生却连警察也照抢不误;
你被强盗抢了可以报警,你被医生抢了只能认命;
强盗作案是把自己打扮成魔鬼,医生抢钱时把自己伪装成天使;
强盗抢光你的钱他逃跑,医生抢光你的钱让你滚蛋;
强盗抢多了叫数额巨大得枪毙,医生钱抢多了称贡献突出受表彰;
你把强盗杀了叫正当防卫,你把医生宰了叫违法犯罪;
医生一辈子也许不会被强盗抢,强盗一生中肯定会被医生抢;
医生上辈子肯定是强盗,强盗下辈子一定想做医生.
FireFox异常错误“Cr.NS_ERROR_FILE_NOT_FOUND“解决方案
长久以来,我的FireFox老是会报以下错误:
- [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]
- [Break on this error] " directories", Cr.NS_ERROR_FILE_NOT_FOUND);
终于受不了,打开这个文件,找到出错位置,经过几次尝试,解决了,方案很简单:
- sudo touch /usr/lib/firefox-3.5.5pre/update.locale
注意:firefox-3.5.5pre换成你的FireFox真实路径。
Ubuntu 9.04(amd64)下安装Flash player
因为项目中的网页有用到Flash,还是背景透明,之前一直懒得装Flash player,看着一块一块狗皮膏药,真不爽,还是装上吧,办法如下:
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
近期评论