在公众号开发中如果我们不能再五秒内给予微信服务器响应,那么微信服务器就会断开连接并且重新发起通知,会连续通知三次。
这样会造成一个问题就是,我们的业务逻辑如果不能保证五秒内回复微信的通知那么微信就会给我们连续通知三次,造成业务逻辑代码执行三次,给用户连续推送三次我们期望的通知。
最近开发中就遇到了这个坑微信告诉我们如果不能再五秒内通知之后直接返回success,那样微信服务器就不会断开连接并且不会再次通知,但是试了一下还是不行,在网上找到了一个方法(我用的是php)
ignore_user_abort(true);
ob_start(); //打开输出控制缓冲
echo 'success'; // 返给微信服务器的字符串
header('Connection: close');//关闭http
header('Content-Length: ' . ob_get_length());
header('X-Accel-Buffering: no');//nginx
ob_end_flush();
ob_flush();
flush();
这样就可以断开连接了
要注意的是一定要在业务逻辑前面加不然不好使