是这样,后台语言是 php。现在出现情况是:我公众号粉丝数据有 2 万多条 我现在想通过微信提供的接口获取男女信息统计男女比例。我业务逻辑是这样:先获取 openidList 大约是 1 万条数据,然后我再循环获取每位粉丝信息。我把男女数据放在变量中了,没有存数据库 。可是现在请求这个接口出现的情况是一直请求中, 然后过了一段时间 nginx 返回 502。 请教各位该如何处理。
1
drush 2018-10-15 18:01:09 +08:00
放 queue 里
|
3
drush 2018-10-15 18:07:40 +08:00
你现在应该是 execution timeout 或者唔够内存。
建议将那个 list 里的 user 放到 queue 里, 后面再慢慢处理。 |
4
yexiangyang 2018-10-15 18:08:33 +08:00
试试多线程执行吧 老铁
|
5
linauror 2018-10-15 18:10:40 +08:00
首先 curl 还是比较耗时间的,毕竟一个个请求的话,需要 1 万多次请求。可以改成批量获取,最多一次可获取 100 条。
|
6
casparchen 2018-10-15 18:15:01 +08:00 via iPhone
怕不是对大数据有什么误解哦
|
7
missqxy OP @casparchen 这是单单一个公众号 所有公众号粉丝有 350 万
|
9
hackerang 2018-10-15 21:59:28 +08:00
@missqxy 502 有可能是 nginx 的问题,要看日志。不过一直 pending 的话要调优,优化 sql,优化你的代码。如果放在内存里的话要保证机器性能是够的。
|
10
xsir2020 2018-10-15 22:34:04 +08:00
nginx 在请求微信接口返回 502 错误,一般都是处理超时或者处理慢。
而且你这个数据量再怎么大数据,调用接口也不可能一次性调用 2 万条吧。 微信接口有个批量获取用户基本信息,一次 100 条,你也就是请求 200 次就行。 不管咋样,你只能慢慢存起来慢慢取呗。 |
11
liuzhen 2018-10-24 17:04:55 +08:00
所以为啥不入库?入库再 SQL 统计不是更快吗?
你这情况是在 http 默认超时时间内,接口无法在后台完成 请求微信接口一万多条数据的耗时对吧 不能理解为什么要实时去调微信的接口,提前把微信数据都拉到本地再过滤就好了 |