今天跟人一起排查一个问题:
同一套worker代码,在旧服务器上执行正常,但是到了新的服务器上:worker起动后,运行正常,没有返回错误,但是server看不到注册的函数
最开始以为是网络不通或网络什么问题,但查了一圈,最后在gearmand的log中,发现了下面的错误:
FATAL [ 0] gearman_packet_unpack_header:invalid command value
结果是:
新服务器上的php gearman扩展是1.0.2版本,而gearmand server的版本是0.28,所以导致server无处理客户端的协议
php的gearman扩展是1.0.2,至少也要gearmand 0.33版本才能兼容
很低级的坑人错误,一开始也没怀疑两个worker服务器上的php扩展版本不同