Tag: php

  • Memcache的分布式应用

    早就听说memcached是一个不错的分布式内存缓存系统,做了些功课想把这memcache用到实际当中来.因为一个好的缓存系统,能给web应用带来不小的性能提升.做了一些功课之后,做了下面几点总结: memcache适合与web server安装在同一server上 memcache可以在n个端口开n个进程,如果和web server在同一机器的话,还能减少网络开销. 配置简单,启动一个进程就行了,免去了配置文件 我更关心的是,memcache的分布式应用应该如何部署.带着这个问题,我在各搜索引擎上做了进一步的功课.最初找到的办法是,首先启动n个memcache进程,这些进程可以在不同的server的不同端口上. 然后使用perl的api可以方便的一次链接多个memcache,存储读取机制不明.不久找到php的一个MemcachedClient类,基本上就是perl里api的再实现.它使用的fscokopen或者socket系列function来直接读取memcache—-这说明只要清楚memcache的网络协议,你甚至不用装什么php的memcache extenstion.看了这个类的实现,基本上弄清楚,它的分布式应用差不多就是将不同的key保存在不同的memcache daemon,不会保留多个副本,也就不存在多memcache同步的问题了. 过了不久俺又有发现,在最新的php手册上找到了memcache::addServer()这方法,它就是为分布式应用而产生的,有了这个支持的话,php的代码就更简单: <?php $memcache_obj = new Memcache; $memcache_obj->addServer(‘memcache_host’, 11211); $memcache_obj->addServer(‘failed_host’, 11211); $stats = $memcache_obj->getExtendedStats(); print_r($stats); ?> 看来php手册也要与时俱进啊,最好是能够直接使用英文版,否则也不会走这么多弯路了:) 官方站点 http://www.danga.com/memcached/

  • vim的php语法检查

    之前一直是editplus的忠实爱好者,对editplus的使用也是小有心得.自打转向到vim之后,费了很大劲才转换一些习惯,渐渐的脱离了editplus,可见一款趁手的编辑器还是粘性很强的.以前说到的editplus可以和zend studio自带的ZendCodeAnalyzer工具进行整合对php语法进行检测,相当方便.那么怎样用vim实现类似的功能呢?一番搜索,找到了答案: map <C-J> :!php -l %<CR> 这样在vim里面就可以直接用ctrl+j,调用php解析器对当前文档进行语法检查了.当然如果php解析器不在你的路径下的话,那么应该写上全路径,象下面这样: map <C-J> :!c:/php/php -l %<CR> PS:vim的语法美化功能也很方便,只要在程序的第一行,command模式下输入=:1,$,就可以把当前代码排列的井然有序.而editplus则需要另外的工具配合,也能做到这一点. 参考资料:http://www.vim.org/tips/tip.php?tip_id=692

  • 学习使用diff和patch

    最近经常要修改一些配置文件,老是需要告诉别人在某一行增加一些字符,然后修改某处,不仅容易出错,而且也麻烦.于是花了10分钟学习diff和patch的使用,就没这个麻烦了:) diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合 的和运算。 diff比较两个文件或文件集合的差异,并记录差异,也就是patch文件, 然后用diff和patch这对工具, 生成另外一个文件。 这就是diff和patch的妙处。 首先我有两个配置文件,他们有些配置上的区别: php.ini php.ini.org 下面我们根据这两个文件生成patch, 并通过patch文件来修改另外一个文件: diff php.ini php.ini.org > php.ini.patch //这样就生成了一个php.ini.patch的补丁文件 patch -p1 -R php.ini.org < php .ini.patch //通过补丁文件修改了php.ini.org,和php.ini一致 参考资料: http://hahaxixi.blogeden.cn/post/143796/4672 google

  • vim的的代码折叠

    vim也是有代码折叠功能的,以前就知道,然而毕竟用的不多,这个功能基本上很少用。随着最近和gvim的亲密接触,对代码折叠功能逐渐熟悉起来。有一次打开一段php的代码 — 比如PEAR.php,发现里面的代码自动被折叠了,将代码展开后,可以看到只要代码两边有/*{{{*/和/*}}}*/,就会被自动折叠。仔细搜索配置,其中有一句是重点: foldmethod=marker 这样vim就会自动搜索代码,将{{{和}}}之间的内容折叠起来,而且代码结尾有一段小注释也不是无用的废料: /* vim600: sw=4 ts=4 fdm=marker syn=php */ 这段注释会被vim读取,并自动设置到环境变量里面。 关于代码折叠的用法,只要在vim中输入: :help zo 就可以看到了不少相关的快捷键,需要一定的练习才可以得心应手:) 我的gvim配置内容又增加了: colo zellner set guifont=Courier_New:h11:cANSI nobackup tabstop=4 shiftwidth=4 foldmethod=marker au BufRead * simalt ~x set langmenu=zh_CN.utf-8 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim set guifont=DejaVu\ Sans\ Mono:h12 source $VIMRUNTIME/../_vimrc set encoding=utf-8 set fileencodings=utf-8,chinese,latin-1 if has(“win32”) set fileencoding=chinese else set fileencoding=utf-8 endif…