- 企业微信开发调用获取用户信息接口会间歇性报Connection timed out 错误。
企业微信开发调用getUserInfo 接口会间歇性报错: Failed to connect to qyapi.weixin.qq.com port 443: Connection timed out不是所有请求都会报错,而是间歇性报错。比如有时候几百次请求中会有三四次报错。目前的临时解决办法是如果有报错就再重新去请求下接口,这样基本能暂时解决问题。请求代码如下:public static function vGet($access_token, $code) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=' . $access_token . '&code=' . $code); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt($ch, CURLOPT_ACCEPT_ENCODING, "gzip,deflate"); $return_data = curl_exec($ch); if($return_data === false) { \think\facade\Log::write('curl error' . curl_error($ch), 'error'); } curl_close($ch); \think\facade\Log::write('getUserInfo' . $return_data, 'debug'); return $return_data; }
2020-01-05 - qyapi.weixin.qq.com频繁更换IP,DNS缓存旧IP导致访问不通的Bug
获取访问用户身份: https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo doc:https://work.weixin.qq.com/api/doc/90000/90135/91707 openid转userid: https://qyapi.weixin.qq.com/cgi-bin/user/convert_to_userid?access_token= doc:https://work.weixin.qq.com/api/doc/90000/90135/90202 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见 小程序登录: https://api.weixin.qq.com/sns/jscode2session doc:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html 我们项目的需要频繁用到该3个接口,解决的场景是微信小程序完成企业登录验证。 qyapi.weixin.qq.com和api.weixin.qq.com这个两个域名,一天变几回IP,而且不是负载均衡那种,负载均衡一般是多个IP都通,这两个域名换了IP后,旧的IP不通。 任何一款DNS(腾讯DNS、阿里DNS、114.114.114.114、8.8.8.8、私有DNS)都会把域名解释到的IP,缓存10分钟,下次访问时如果命中DNS缓存,则直接由DNS缓存返回。再加上操作系统(Windows、Linux)也会有自己的10分钟DNS缓存。 如果在DNS服务器域名缓存第10分钟快要过期时,操作系统命中了DNS服务器的缓存,把DNS的缓存重新缓存到操作系统DNS缓存,就会导致最长20分钟无法正常使用系统,因为这段时间ping qyapi.weixin.qq.com和ping api.weixin.qq.com,得到的IP是旧IP,已经不提供接口响应。 请腾讯官方解决这个问题,在更换域名更换IP时,延长旧IP的有效时间,或者固定几个长期有效的负载均衡IP。这个问题不是开发者能解决的了。
2021-12-22