为什么不能在字符组中使用反向引用

为什么不能在字符组中使用反向引用不能在字符组中使用反向引用,原因是正则表达式的\1在字符组中[\1],在大多数的正则流派中,会被正则引擎作为八进制转义,实际上的匹配结果将变成\x01。除了不能在字符组中使用反向引用,还不能使用捕获分组,这里也提到了,正则表达式的元字符括号()在字符组中将被理解为普通的字符(),也就是说,在字符组character class中,不用再转移了,即[()]是合法的表达式,且可以匹配到(或者)。比如文章中给的例子:表达式[(a)b]匹配结果并不是a或者b,如果a匹配到,再将a分配到group 1中,而是可以匹配到ab()四个字符。所以,在字符组中使用反向引用,是不能实现的了。

Continue reading


PHP API中,MYSQL与MYSQLI的持久连接区别

445b66d3jw1e3zg8ueei3j20b40go0uephp拓展的mysql跟mysqli的长连接一样使用吗?有什么区别?是否重新创建TCP链接的条件,都是HOST、PORT、USER、PASS这些参数吗?在libmysql跟mysqlnd下表现一样吗?在CLI模式跟FPM模式下表现一样吗?mysqli的长连接如何使用呢?在同一个脚本中,mysqli长连接为什么没有使用同一个链接?而又新建了链接呢?

Continue reading


Nginx模块fastcgi_cache的几个注意点

在web项目中,大家都已经非常熟悉其架构流程了。这些流程中,几乎每个环节都会进行cache。从浏览器到webserver,到cgi程序,到DB数据库,会进行浏览器cache,数据cache,SQL查询的cache等等。对于fastcgi这里的cache,很少被使用。在我的测试过程中,发现一些问题。比如nginx的fastcgi_cache没缓存这条http响应,是因为响应头里包含“Expires”、“Cache-Control”的原因吗?程序里并没有输出“Expires”、“Cache-Control” http header的代码,这是谁输出的呢?既然是fpm响应的时候,就已经有了,那么是php的core模块,还是其他拓展模块输出的?“Expires:”时间为何是“Thu, 19 Nov 1981 08:52:00 GMT”?

Continue reading


google play购买Nexus 4手机小记(新增Nexus 5购买历程)

01692_leaftopliquidtrap_320x2402005年读大学时,我的手机是CECT,具体什么型号记不住了,在07年无法开机,200块钱在淘宝上买了黑莓7230,大约用了1年不到,硬件太差,频繁死机,又花了1500块,入手黑莓8800。从08年起,黑莓8800陪伴我到2012年的9月份,将近4年半的时间,由于很多潮流的社交软件都没有黑莓版,我也趁机冒充了一段时间的好男人。下一部手机,Nexus 4…

Continue reading


php与mysql通讯那点事

青青子衿,悠悠我心mysql,mysqli,pdo-mysql、libmysql、mysqlnd之间有什么关系?他们分别是什么?mysql_query之后的结果集是立刻从mysql server发送到客户端的吗?还是mysql_fetch_x函数递归时才获取的?mysql_query跟mysql_unbuffered_query函数那个更好些?我该如何选择mysql的API函数?mysql的客户端驱动用哪个为好?

Continue reading


nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket

前几天看到一篇博客《关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题》,提到php所在服务器在大并发情况下,频繁创建TCP短连接,而其所在服务器的2MSL时间过长,导致没有端口可用,系统无法创建TCP socket,而大量报错。博主在后面给的解决方案是减少2MSL的时间,尽快清除TIME_WAIT状态的TCP连接,回收端口。同时,文章结尾写了不用长连接的理由,但这真的是最好的解决办法吗?有其他办法可以更好的做法吗?

Continue reading


CodeIgniter框架中关于DB事务处理的设计缺陷

在我们线上的某个业务中,使用较老版本的CodeIgniter框架,其中的DB类中,对DB事物处理部分存在着一个设计上的缺陷,或许也算不上缺陷吧。但他却影响了我们生产环境,导致连锁反应。对业务产生较大影响,且不容易排查。这个问题,我在今年的3月中旬,曾向http://codeigniter.org.cn/的站长Hex 报告过,之后,我也忘记这件事情了。直到今天,我们线上业务又一次以为这个问题,害的我又排查一次。具体原因,各位且先听我慢慢说完。

Continue reading


php5.3.8中编译pdo_mysql的艰难历程

1,以官方文档为准,一切跟着官方文档来,不轻易采信网络上网友提供的编译参数,包括这边博文。不论对方是老手、大牛,还是其他什么什么有威望的人。他们提供的方法或许跟你当前的环境不一致,时间也相差很大,或许相隔好几年了;2,确认得到的结果是准确的,怎么说呢,文中的例子中php-i的路径不是我们新编译的,而是之前编译,或者yum安装的,一定要到自己编译的程序目录下,用自己新编译的脚本去执行测试,获得测试结果,下结论,不为了偷懒,不敲路径,直接写程序名进行测试;

Continue reading