问题总结

近期遇到几个棘手的问题.

1. libcurl 在post大于1024字结的时候.会慢1s..小于1024则不会.

原因是http 1.1协议规定post大于1024字节的时候会发头部:

Expect:100-continue

询问Server使用愿意接受数据 2. 接收到Server返回的100-continue应答以后, 才把数据POST给Server

如果服务器不能正确的应答100-continue.则会导致逻辑混乱..解决方法:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Expect:’));

具体的RFC相关描述: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3

2. gtalk机器人发疯的问题

gtalk机器人发疯了几次.一真没找到原因.项目中使用开源的pygtalkrobot修改而来.

在controller中没有判断内容的type,正常的chat.而在一些因网络问题.没有能及时更新用户列表的时候会导致一些错误的发生.503 service unaviliable等错误.恰恰程序中没有判断这个类型..导致一直会发微博.而发完微博后要给发送者返回结果.此时还是503..死循环了…解决方法就是加一句代码:

t_type = message.getType()

if text and t_type == ‘chat':

这样就OK了…