调外部接口不设超时?对方接口一慢,你整个网站请求全堵死直接502

9年前 (2018-01-19)阅读1回复0
genmulu
genmulu
  • 管理员
  • 注册排名1
  • 经验值27950
  • 级别管理员
  • 主题5590
  • 回复0
楼主

新手写PHP代码,调微信、支付接口的时候,不设超时时间,对方接口慢的时候,你的PHP页面直接卡10秒、20秒,整个网站的请求全堵死。外部接口超时配置几个要点:第一,所有curl调用外部接口,必须设连接超时5秒,请求超时10秒,别让请求一直挂着等对方响应,对方挂了,你的页面也跟着卡;第二,接口超时了,给前端返回友好提示,别直接抛个PHP错误,用户看到错误代码直接关页面;第三,别在用户请求的时候同步调慢接口,比如提交订单,同步调微信接口,对方慢,用户页面转半天,能放后台异步处理的就放队列里;第四,连续失败几次的外部接口,暂时熔断,别每次请求都打过去,把你自己的服务器CPU占满。

我之前做微信支付,忘了设超时,微信接口那天故障,用户提交订单页面卡15秒,后面的请求全堵着,直接502,加了超时和异步队列之后,再也没出过这种情况。很多新手写代码,只想着功能跑通就行,根本不管外部接口的超时处理,等第三方接口慢的时候,整个网站直接被拖垮,这些配置都是几行代码的事,成本特别低,但是不做,出事的时候整个站都打不开。

本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。

本文地址:https://www.genmulu.cn/genmulu/3381.html

0
回帖

调外部接口不设超时?对方接口一慢,你整个网站请求全堵死直接502 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息