Submitted by gouki on 2010, October 3, 10:08 PM
Submitted by gouki on 2010, October 2, 1:59 AM
最近单位的服务器好象经常出点事,苦于没有运维啊。灰常痛苦。
症状如下,先是网通的朋友说打不开,后来能打开,然后在公司里全部能够打开,河北人民告诉我,电信3G能打开,网通不行,南方的人民告诉我打得开。然而,唯一让人郁闷的是老板打不开。。。
不知道什么原因,然后因为服务器是做了LVS负载均衡,理论上应该没事,web服务器中php的进程也很正常。两台WEB服务器的nginx配置文件检查了一下,没发现啥问题,后来用tail /xxx/xxx/xxx.log看了一下,居然报配置文件出错,打开文件一看,居然有一行被注释的内容断行了,造成部分内容没有被注释,引起了错误,于是删除并重启nginx。
再后来就正常了,可是到晚上,又突然有人说出现502错误了,象这种情况,大多数是php-cgi进程要么超时,要么数量不够要么。。。苦于没有运维,我唯一能做的就是重启了一下WEB(一些配置文件都不在家,否则可以尝试只重启nginx和php-cgi)。
有人问过我为什么不升级到php5.3,说实话,我真的很想升啊。可惜用的代码中,有部分关键代码占用了5.3的关键字(好象以前在博客里说过,函数名居然叫namespace。于是,我傻眼了)
ThinkInLamp群中的hm说5.3自带的fastcgi好象不太稳定,反正我也没法升级,就随便看着喽(想着他们居然有时间有精力看nginx等的源码,心里就觉得非常佩服)
-------------
越往后越发现自己的能力欠缺,比如说开发都要了解linux的常规操作,但事实上,常规操作都会了,但一些更深层次的不深入也不行啊。不再深入一点,就无法真正从底层上进行性能调优等(纯PHP代码的调优,终究是有限度的)
Submitted by gouki on 2010, October 1, 12:31 AM
啥也不多了。灌水。。。
为同样和我一样在加班的朋友们祝福。
注意,保重身体
Submitted by gouki on 2010, September 30, 2:51 AM
好象,大多时候,我们对于字符串的比较都是采用了 strtolower或者strtoupper之后,再判断是否相等。只是这样就需要转换两次。大多时候,我们是针对字符集转换的时候才会这样,比如判断参数传进来是否utf-8,这5个字符的写法,可就多了,比如UTF-8,Utf-8,utf-8等,那我们怎么办呢?strtolower?strupper?不需要啦。。
strncasecmp($a,$b,$length)就可以了。。
如果返回是0则相等,那我们怎么判断呢?
strncasecmp($str,'utf-8',5) == 0那么,传入的参数就是utf8的,是否很方便呢?
只是这些函数我们平时不太用得到,我看到这个函数的用法却是在 yii framework,他在处理事件的时候,判断前两个字符是否为 on 的时候,就是这样判断的。我也因此学到了一招。
Submitted by gouki on 2010, September 29, 10:19 PM
现在,懒得排版了。
遇到这个问题,从A表往B表导数据,初始SQL是这样的:
由于member_id不是主键,于是传说中的Replace删除数据的情况就出现了(replace在更新不是主键的时候,但某数据是唯一索引时,其实它是删除该数据,再insert,这时候如果你只是更新一两个字段,那么其余的字段就会变成默认值)。所以,该方法被我否决。但因为我只要更新一个字段,所以我想着用update,开始的时候,怎么也想不出,后来卫斯文和我说,用insert ignore into吧。于是把replace into 换成了 insert ignore into进行测试,结果是0 rows affected。
怎么办,问了一下锅巴哥哥,他说:用ON DUPLICATE KEY UPDATE吧,于是到mysql官方上找了一下资料,google搜索mysq on duplicate,第一条就是官方手册,我这里就不贴链接了,但我事实上没有看太懂。。这时候卫斯文也说用ON DUPLICATE KEY UPDATE。然后给了一个例子:
虽然功能能不太一样,但已经有点差不多了,他对此sql的解释是:sid+type 为唯一索引,如果唯一索引重复则更新count_num字段。也就是说,我上面的例子其实是可以用这个insert into来实现的,因为member_id虽然不是主键,但它是唯一索引。
然后我就尝试着写update,写出了这样的语句:
执行下来,没问题,只是这个花费的时间啊,超多。。。正在思考的过程中,ThinkinLamp群中的newone又给了个例子,那就是用临时表,当时他写的SQL是这样的:
其间,锅巴哥哥威胁我,要我参加他的mysql高级培训班,在此先鄙视一下。