Archive for 编程

PHP之父评Facebook的HipHop:别当作银弹

据《纽约时报》网站报道,读写网记者与PHP的创造者Rasmus Lerdorf联系,询问他对Facebook刚刚开源的PHP优化项目HipHop有何看法。Lerdorf在邮件中说,这是一个很酷的项目,肯定会成为某些网站很好的选择。 Read the rest of this entry »

评论

Facebook性能大提升的秘密:HipHop

Facebook神秘的PHP项目HipHop for PHP终于揭开面纱。这个项目由一个PHP到C++的转换程序,一个重新实现的PHP运行库,和许多常用PHP扩展的重写版本构成,目的是旨在加速和优化PHP。

Facebook官方博客(无法直接访问)上项目负责人赵海平(北大1987届遗传与分子生物专业,普林斯顿计算机科学博士)的话说,HipHop项目对Facebook影响巨大。它目前已经支撑了Facebook 90%的Web流量。由于HipHop,Facebook Web服务器上的CPU使用平均减少了50%,从而大大减少了服务器的需求。为了让这一改进也惠及社区,他们决定将之开源,希望能够进一步帮助提高更多大型复杂PHP网站的可伸缩性。 Read the rest of this entry »

评论

js鼠标准确定位

在XHTML页面做鼠标定位的时候,可能会出现第一屏鼠标定位准确,第二屏的时候,鼠标定位出现了偏移。下面一个简单的办法来解决这个问题。

  1. if(e.pageX || e.pageY){ 
  2.                 _tips.style.left = e.pageX;
  3.                 _tips.style.top = e.pageY;
  4.             } else {
  5.                 if(document.documentElement && document.documentElement.scrollLeft) 
  6.                             { 
  7.                                 scrollLeft = document.documentElement.scrollLeft;
  8.                             }    else if (document.body) { 
  9.                                 scrollLeft = document.body.scrollLeft;
  10.                             }
  11.                            
  12.                             if(document.documentElement && document.documentElement.scrollTop) 
  13.                             { 
  14.                                 scrollTop = document.documentElement.scrollTop;
  15.                             }    else if (document.body) { 
  16.                                 scrollTop = document.body.scrollTop;
  17.                             } 
  18.  
  19.                 _tips.style.left = scrollLeft+e.clientX+10;
  20.                 _tips.style.top = scrollTop+e.clientY+10;
  21.             }

上面的代码跟我的应用有结合的,使用的时候,修改一下就行了。

评论

phpMyAdmin超时设置

phpMyAdmin默认是30分钟超时的,对于做开发的人来说那个时间太短了。经常给退出的感觉不好玩。其实,只要在配置文件里加入

  1. $cfg['LoginCookieValidity'] = 18000;

这样就会有5小时的超时了。

评论

javascript修改frameset的src方法

有些页面可能使用Frameset的方式来做会更方便快捷,如CRM的菜单。这样会更来一个新的问题,如果帐号给退出了转跳的URL是否是自己想要的位置呢?

其实方法很简单的,我的思路为:

  1. <script type="text/javascript">
  2.         if (window.parent.frames["$target"]) {
  3.             window.parent.frames["$target"].location = "$url";
  4.         } else {
  5.             window.parent.parent.frames["$target"].location = "$url";
  6.         }
  7. </script>

我的项目只用了二级Frameset,Js操作Frameset以当前的Frameset开始算位置的。而不是为窗体最外面开始算起的。只是做一下记录,我为这个小问题困扰了一个来小时。之前好象也遇过这样的问题。因为没有记录下来,只好重新花时间来学习处理咯。呵呵

评论

Jquery内存占用问题

最近使用PHP跟Jquery结合做一些小东西来研究,为以后做CRM之类的软件做一些资料准备。具体的产品方向是什么,暂时还没有下定论。只是先准备好一些软件以及架构上的东西先。

Jquery进行无刷更新页面的时候,我遇到内存会一直增加的问题。问过很多朋友都说没有这个问题。或许他们没有详细地测试过吧。一般要把页面挂在那里10分钟之后才会有感觉的。从当前页面跳转到其他页面会出现卡一下再转跳的情况。不少公司不重视这个问题的,如开发网,如果把一个页面挂在那里比较久的话,会出现再开其他页面会比较慢。

在GG搜了一把,主要是的原因是因为Javascript的内存泄露引起的。我也找到了一个解决的办法,拿来先顶着吧。对于复杂的JavaScript还是会出现内存泄露,或许那个页面的JavaScript需要我自己重新写过吧。
Read the rest of this entry »

评论 (2)

preg_match对字符长度有限制?

今天在写采集程序的时候,使用到了preg_match,但是有几个页面始终采集不下来。反复看了N遍的正则,没有发现有问题。于是开始怀疑preg_match是否对匹配的字符串有长度限制。但是官方的文档里面没有说明这一点。

于是开始测试:将要匹配的字串不断缩短,直到缩为原来1/5的时候可以正常匹配了,所以更加确定了。

到google里一搜,终于找到了解决方案:在php.ini中加入(随便放到哪里,我是直接放第一行的)

  1. pcre.backtrack_limit=-1

再次使用preg_match函数测试一下,大概1300多行上万个字符的字符串也能够匹配了。

评论

FreeBSD下以CGI模式运行PHP

一般情况下,很多人会选择把PHP以Apache的模块来运行。这样会导致静动态都由Apache的线程处理,并且PHP无法使用到Cache。Apache下跑PHP,应该是以CGI方式运行性能会更好。下面简单地记录,我使用FreeBSD安装以及配置以CGI模式运行PHP的经过。

Read the rest of this entry »

评论

windows7中文语言包

今天一开机,看到Windows7有几十个更新,仔细一看,原来已经有中文语言包了。

具体还有什么更新我慢慢研究一下先。呵呵。

评论

Smarty使用Memcache进行缓存

默认的Smarty缓存是使用File进行缓存的。在高并发的时候,压力会在IO方面。为了避免在高并发的时候,IO占用高。我写了一个Smarty的插件,将缓存写入Memcache。曾经想过自己写一个模板的,感觉后期的维护比较麻烦,所以。。。。

Read the rest of this entry »

评论