关于php的chroot
chroot可以比较简单地实现php程序的安全,有些lib如果没有复制给用户,会导致用户无法使用一些函数。详细的配置方面,迟点有空的时候再写了。现在只是简单地写个一个问题解决先。
主要是解决chroot之后,php程序无法使用网络相关的函数问题。
只要将/lib/libnss_dns.so.2 复制到chroot的lib目录下就可以解决网络访问问题了。当然了,还需要将/etc/resolve.conf复制到chroot的etc目录下才行。
chroot可以比较简单地实现php程序的安全,有些lib如果没有复制给用户,会导致用户无法使用一些函数。详细的配置方面,迟点有空的时候再写了。现在只是简单地写个一个问题解决先。
主要是解决chroot之后,php程序无法使用网络相关的函数问题。
只要将/lib/libnss_dns.so.2 复制到chroot的lib目录下就可以解决网络访问问题了。当然了,还需要将/etc/resolve.conf复制到chroot的etc目录下才行。
现在使用phpdoc生成文档,已经是比较简单的事了。只是默认不支持utf8,以下的方法是修改 支持utf-8
cd /usr/share/pear/data/PhpDocumentor/phpDocumentor/Converters
find ./ -name '*.tpl' | xargs sed -i 's/iso-8859-1/utf-8/g'
据《纽约时报》网站报道,读写网记者与PHP的创造者Rasmus Lerdorf联系,询问他对Facebook刚刚开源的PHP优化项目HipHop有何看法。Lerdorf在邮件中说,这是一个很酷的项目,肯定会成为某些网站很好的选择。 Read the rest of this entry »
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 »
phpMyAdmin默认是30分钟超时的,对于做开发的人来说那个时间太短了。经常给退出的感觉不好玩。其实,只要在配置文件里加入
这样就会有5小时的超时了。
最近使用PHP跟Jquery结合做一些小东西来研究,为以后做CRM之类的软件做一些资料准备。具体的产品方向是什么,暂时还没有下定论。只是先准备好一些软件以及架构上的东西先。
Jquery进行无刷更新页面的时候,我遇到内存会一直增加的问题。问过很多朋友都说没有这个问题。或许他们没有详细地测试过吧。一般要把页面挂在那里10分钟之后才会有感觉的。从当前页面跳转到其他页面会出现卡一下再转跳的情况。不少公司不重视这个问题的,如开发网,如果把一个页面挂在那里比较久的话,会出现再开其他页面会比较慢。
在GG搜了一把,主要是的原因是因为Javascript的内存泄露引起的。我也找到了一个解决的办法,拿来先顶着吧。对于复杂的JavaScript还是会出现内存泄露,或许那个页面的JavaScript需要我自己重新写过吧。
Read the rest of this entry »
今天在写采集程序的时候,使用到了preg_match,但是有几个页面始终采集不下来。反复看了N遍的正则,没有发现有问题。于是开始怀疑preg_match是否对匹配的字符串有长度限制。但是官方的文档里面没有说明这一点。
于是开始测试:将要匹配的字串不断缩短,直到缩为原来1/5的时候可以正常匹配了,所以更加确定了。
到google里一搜,终于找到了解决方案:在php.ini中加入(随便放到哪里,我是直接放第一行的)
再次使用preg_match函数测试一下,大概1300多行上万个字符的字符串也能够匹配了。
一般情况下,很多人会选择把PHP以Apache的模块来运行。这样会导致静动态都由Apache的线程处理,并且PHP无法使用到Cache。Apache下跑PHP,应该是以CGI方式运行性能会更好。下面简单地记录,我使用FreeBSD安装以及配置以CGI模式运行PHP的经过。
默认的Smarty缓存是使用File进行缓存的。在高并发的时候,压力会在IO方面。为了避免在高并发的时候,IO占用高。我写了一个Smarty的插件,将缓存写入Memcache。曾经想过自己写一个模板的,感觉后期的维护比较麻烦,所以。。。。
通过配置include的路径,之后通过上面的$classname规则动态将文件加载。我上面的规则说明,文件名为”类名+Class”,类名称为“类名+Class”。
SPL在Zend Framework也有应用的。
这只是一个关于SPL的小应用,SPL是PHP5比较好的东西。有空再慢慢地研究一下。