首页 新闻 会员 周边 捐助

PHP接口的数据请求 ,求大神给个建议???急

0
悬赏园豆:50 [待解决问题]

1.我请求的数据有六千多条,每次只能读取40条,每次请求有返回一个has—next来判断是否有下一条数据,和一个last—fans—id来作为请求下一条数据的参数,我怎样才能做到拉去到全部的数据??????

2.这是接口文档的地址:https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.followers.pull

 

阿鸠的主页 阿鸠 | 初学一级 | 园豆:2
提问于:2017-07-18 09:55
< >
分享
所有回答(6)
0

拉取全部数据在技术上是可以实现的,但是我劝你别这样做!

1.请求会非常耗时

2.我保证600条数据你就会感到卡顿

3.6000条不是个小数目,这种瀑布流的加载方式肯定有他的道理

4.对服务器也是一种不友好的行为

5.通过递归就能实现获取所有数据

好来污影后 | 园豆:287 (菜鸟二级) | 2017-07-18 10:06

我知道啊   ,而且数据的信息又在不停地更新,我存在数据库也好像没什么意义。递归获取所有的信息还不是一样卡

支持(0) 反对(0) 阿鸠 | 园豆:2 (初学一级) | 2017-07-18 10:23

@阿鸠: 递归获取所有肯定卡呀,我只是说这样能实现而已..

支持(0) 反对(0) 好来污影后 | 园豆:287 (菜鸟二级) | 2017-07-18 10:24
0

非要这样做,只能循环去取。。

幻天芒 | 园豆:37207 (高人七级) | 2017-07-18 10:14
0
var userList = [];//信息存储在这,总列表
function userList(id){
    var data ={
        last-fans-id:id
    }
    $.ajax({
            url: '接口地址',
            type: 'POST',
            data: data,
            async: false,
            success: function (resp) {
                userList.push(此处为你接收到的用户信息);
                //此处判断是否有last-fans-id,有则继续请求,无则终止请求
               if(has-next){
                    userList(last-fans-id);
               }
            },
            error: function () {
                
            }
    });
} 
userList(last-fans-id);   

大致就是这么个意思,你可以根据具体情况修改一下

与阳光握手言和 | 园豆:373 (菜鸟二级) | 2017-07-18 10:23

你看了文档了吗?额,我不是很懂

支持(0) 反对(0) 阿鸠 | 园豆:2 (初学一级) | 2017-07-18 10:28

@阿鸠: 没看,兄弟,我觉得大家只是给你提供个思路供你参考,具体还是要你自己去实现,这样才能进步。如果这种小问题都要别人把代码一点不差的写给你,那你下次怎么办。况且我上面写这个已经很接近了,你可以根据这个思路自己尝试去写一下,如果实在不会随时可以问

支持(0) 反对(0) 与阳光握手言和 | 园豆:373 (菜鸟二级) | 2017-07-18 10:32

@与阳光握手言和: 我是用php请求接口的数据然后存在数据库,我用了一个do{}while循环去读取,但是太卡了,而且接口的数据会更新,现在又感觉要定时去拉去数据,很麻烦!

我的代码如下:

 1    public function weixin_followers_pull()
 2     {
 3         $obj = new Youzan();
 4         $access_token = $obj->get_access_token();
 5         $token = $access_token;//请填入商家授权后获取的access_token
 6         $client = new \YZTokenClient($token);
 7         $method = 'youzan.users.weixin.followers.pull'; //要调用的api名称
 8         $api_version = '3.0.0'; //要调用的api版本号
 9         $my_params = ['after_fans_id' => '0'];
10         $my_files = [];
11         $result = $client->post($method, $api_version, $my_params, $my_files);
12         unset($result['response']['tags']);
13         unset($result['response']['level_info']);
14         $last_fans_id= $result['response']['last_fans_id'];
15         pre($result['response']);
16         //\think\Db::name('weixin_followers')->insert($result['response']['users']);
17        do{
18            $method = 'youzan.users.weixin.followers.pull'; //要调用的api名称
19            $api_version = '3.0.0'; //要调用的api版本号
20            $my_params = ['after_fans_id' =>$last_fans_id];
21            $my_files = [];
22            $result1 = $client->post($method, $api_version, $my_params, $my_files);
23            $last_fans_id=$result1['response']['last_fans_id'];
24            $has_next=$result1['response']['has_next'];
25            unset($result1['response']['tags']);
26            unset($result1['response']['level_info']);
27            pre($result1);
28            sleep(10);
29           // $db=\think\Db::name('weixin_followers')->insert($result1['response']['users']);
30 
31        }while($has_next);
View Code
支持(0) 反对(0) 阿鸠 | 园豆:2 (初学一级) | 2017-07-18 10:47

@阿鸠: 你是做php的啊,我看题目以为是前端呢,php我只懂一点,不敢瞎说,建议你在问题那修改一下,标上是php,请自动忽略我之前的评论,O(∩_∩)O哈哈~祝好

支持(0) 反对(0) 与阳光握手言和 | 园豆:373 (菜鸟二级) | 2017-07-18 10:57
0

直接循环有什么难点吗?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-18 10:30

每次返回的参数都不一样,而且很卡

支持(0) 反对(0) 阿鸠 | 园豆:2 (初学一级) | 2017-07-18 10:31

@阿鸠: 卡看是网络请求慢.还是你本地处理慢.网络请求慢的话就别管了.

返回值的结构看着是不会变的吧?和文档说的不一样吗

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-18 10:35
1

你这个问题在于蹩脚的需求 而非技术本身

顾星河 | 园豆:7281 (大侠五级) | 2017-07-18 10:34
0

一开始我以为题主是不会写代码。

看到后来,才知道题主是不会做需求分析和系统设计。

爱编程的大叔 | 园豆:30844 (高人七级) | 2017-07-18 10:53

我是一名刚入职的程序员哈哈哈,遇到了很多的问题,还希望大叔指指路,抱拳了

支持(0) 反对(0) 阿鸠 | 园豆:2 (初学一级) | 2017-07-18 10:55

@阿鸠: 你看看你问的问题,还有别人的回答。

想想以后如何问问题,这个最重要。

新手最大的问题是不知道如何问问题。

1、不说你的语言,就有人回答JS。

2、你这确实是一堆问题,而不是一个问题。你必须学会把一堆问题拆开来一个个解决。

3、“我怎样才能做到拉去到全部的数据??????" 这样写我确实以为你是不懂写代码。

4、你现在的问题是,慢还是不懂这样设计对不对,慢那没法子,别人提供的接口,除非你收购对方公司。

5、如果是设计问题,那么没有人知道你的原始需求是啥,没法给你提供建议。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2017-07-18 11:08

@爱编程的大叔: 谢谢大叔,铭记在心,抱拳

支持(0) 反对(0) 阿鸠 | 园豆:2 (初学一级) | 2017-07-18 11:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册